微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何仅启用相关行的按钮?

如何解决如何仅启用相关行的按钮?

我有一张表,主体正在使用 foreach 循环。

### numerical derivative for gnuplot 4.2.6
reset

DATA = "Data.dat"
set table DATA
    set samples 150
    plot sin(x)/x
unset table

TEMP1 = "temp1.dat"
TEMP2 = "temp2.dat"
set table TEMP1
    plot DATA u 1:2 every ::1
unset table

system(sprintf('paste %s %s > %s',DATA,TEMP1,TEMP2))

x0(col) = (column(col)+column(col+3))/2.
dx(col) = (column(col+3)-column(col))/2.
dy(col) = (column(col+3)-column(col))/2.

plot DATA  u 1:2 w lp pt 7 title "Data",\
     TEMP2 u (x0(1)):(dy(2)/dx(1)) w lp pt 7 title "1st Derivative"
### end of code

对于我做的 javascript:

 <?PHP foreach ($list as $test) : ?>

                    <tr>

                        <td>
                            <?= form_open_multipart('/test/update/' . $test['id'],['class' => 'needs-validation','novalidate' => '']); ?>
                            <?= form_dropdown(
                                'something',$option,$test['smt'],['required' => '','id' => 'smt2','class' => 'd-block col-12 form-control']
                            ); ?>
                        </td>

                        <td align="right"><button class="btn btn-success btn-sm" type="submit" id="submit" disabled>SAVE UPDATE</a></td>

                        <?= form_close(); ?>
                       </tr>
                <?PHP endforeach; ?>

用户更改下拉列表的值时,将启用“保存更新”按钮。现在,如果用户在任何下拉列表中更改,无论在哪一行,所有按钮都将被启用。 我希望仅启用更改下拉列表的行中的保存按钮。

解决方法

您需要使用 DOM 遍历来查找与引发 button 事件的 select 相关的 change。您可以使用传递给处理程序函数的事件获取对 button 的引用。从那里您可以使用 trclosest() 获得最近的公共 find()。试试这个:

jQuery($ => {
  $('select').on('change',e => {
    $(e.target).closest('tr').find('button').prop('disabled',false);
  });
});

注意使用 prop() 来设置 disabled 标志而不是 attr()。最好尽可能使用 prop(),因为它可以避免不必要的 DOM 访问,从而提高性能。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。