javascript - 如何只启用相关行的按钮?

标签 javascript php jquery codeigniter foreach

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

 <?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; ?>

对于我做的 javascript :

 $(document).ready(function() {
   

    $('select').on('change', function() {
           $('button').attr('disabled', false);
       });
    });

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

最佳答案

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

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

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

关于javascript - 如何只启用相关行的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68199169/

相关文章:

javascript - Node JS Passport Google OAuth 未进行身份验证

javascript - 如何在 JavaScript 中启用 href

javascript - 为什么 jQuery.getJSON 不返回任何数据?

javascript - 过滤数组中的重复值

javascript - 将 undefined 赋值给已声明但未初始化的变量?

javascript - 如何解析从 javascript 或 jquery 中的 php 脚本检索的 json 数据

php - 向同一个表字段插入多个值

php - 如何运行我的两个 foreach 循环而不仅仅是一个

php - 将 PHP json_encode 数组发送到 jQuery

javascript - jQuery 发送到 e,然后我可以使用 e.currentTarget 来获取页面上的元素。那我该如何使用它呢?