jQuery:发生更改事件时,checked属性未定义

安德烈亚斯(Andreas)

我看到了很多与此主题有关的问题,但都没有解决我的问题。

麻烦是:我有一个复选框,并且当用户单击它时需要被检查属性的新值。

我已经尝试过像on。(“ change” ..和.change(function()..这样的事件附加器,但是总是返回“ undefined”。我还测试了(带有警报)是否对变量进行了更多分配然后一次,但他们没有。

请考虑脚本,并告诉我您是否知道我在做错什么。或者,如果我应该发布更多信息。

$(document).ready(function () {
        $('#invoice_list :checkbox').on('change', function () {
            var _invoice_id;
            var _payed;
            var _sent;
            $(this).parent().siblings().each(function () {
                if ($(this).hasClass('name?ajax_invoice_id')) {
                    _invoice_id = $(this).text();
                }
                if ($(this).hasClass('name?ajax_payed')) {
                    _payed = $(this).children(':checkbox').prop('checked');
                }
                if ($(this).hasClass('name?ajax_sent')) {
                    _sent = $(this).children(':checkbox').prop('checked');
                }
            });
            alert('invoice_id: ' + _invoice_id + '\r\npayed: ' + _payed + '\r\nsent: ' + _sent);
        });
    });        

如果我选中“已付款”复选框,那么无论新值如何(无论“已发送”是什么),这都是结果:本地主机说

剃刀视图中的html

<tbody class="clickable">
                    <tr>
                        <td class="name?ajax_invoice_id">85</td>
                        <td>31-10-2015 16:54:27</td>
                        <td>31-10-2015 00:00:00</td>
                        <td>31-10-2015 00:00:00</td>
                        <td>4800,00</td>
                        <td>6000,00</td>
                        <td>1200,00</td>
                        <td>25,00 %</td>
                        <td>1</td>
                        <td>6,00</td>
                        <td>800,00</td>                            
                        <td class="name?ajax_sent"><input data-val="true" data-val-required="The Sendt field is required." id="Collection_0__Sent" name="Collection[0].Sent" type="checkbox" value="true" /><input name="Collection[0].Sent" type="hidden" value="false" /></td>
                        <td class="name?ajax_payed"><input data-val="true" data-val-required="The Betalt field is required." id="Collection_0__Payed" name="Collection[0].Payed" type="checkbox" value="true" /><input name="Collection[0].Payed" type="hidden" value="false" /></td>
                    </tr>
                    <tr>
                        <td class="name?ajax_invoice_id">36</td>
                        <td>25-10-2015 18:54:35</td>
                        <td>25-10-2015 00:00:00</td>
                        <td>25-10-2015 00:00:00</td>
                        <td>6400,00</td>
                        <td>8000,00</td>
                        <td>1600,00</td>
                        <td>25,00 %</td>
                        <td>1</td>
                        <td>8,00</td>
                        <td>800,00</td>                            
                        <td class="name?ajax_sent"><input data-val="true" data-val-required="The Sendt field is required." id="Collection_1__Sent" name="Collection[1].Sent" type="checkbox" value="true" /><input name="Collection[1].Sent" type="hidden" value="false" /></td>
                        <td class="name?ajax_payed"><input data-val="true" data-val-required="The Betalt field is required." id="Collection_1__Payed" name="Collection[1].Payed" type="checkbox" value="true" /><input name="Collection[1].Payed" type="hidden" value="false" /></td>
                    </tr>
        </tbody>
梅赫迪·德加尼(Mehdi Dehghani)

更新

$('table input[type=checkbox]').on('change', function() {
  var _invoice_id = 'not found',
    _payed = 'not found',
    _sent = 'not found',
    $this = $(this);

  $this.closest('tr').children('td').each(function() {
    var $this = $(this);

    if ($this.hasClass('name?ajax_invoice_id')) {
      _invoice_id = $(this).text();
    }
    if ($this.hasClass('name?ajax_payed')) {
      _payed = $(this).children('input[type=checkbox]').prop('checked');
    }
    if ($this.hasClass('name?ajax_sent')) {
      _sent = $(this).children('input[type=checkbox]').prop('checked');
    }
  });

  alert('invoice_id: ' + _invoice_id + '\r\npayed: ' + _payed + '\r\nsent: ' + _sent);
});

jsfiddle

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TypeError:无法读取未定义的属性“事件”

使用React时发生TypeError:无法读取未定义的属性“ firstChild”

调用提升函数时发生未定义的错误

jQuery键盘事件代码属性始终未定义

jQuery ID属性值未定义

在angularJs中访问对象时发生未定义的错误

登录时未定义的属性

IE 11上的鼠标事件属性未定义

onchange事件发生“未定义”错误

Laravel Notifications事件侦听器未定义属性

Angular-使用* ngfor时的未定义属性,(更改)

更改选择时未定义JQuery数据属性

当外部库添加未定义的属性时,Vue无法检测到更改

Jinja:调用Hive(气流)时发生未定义的错误

错误:选择存储状态时发生错误:无法读取未定义的属性“ counter”

使用“地图”时属性未定义

尝试在Laravel中使用关系时发生未定义的属性错误

使用React App时发生错误-无法读取未定义的属性“照片”

Google App脚本-映射时发生错误-TypeError:无法读取未定义的属性“ map”

克隆的复选框“ checked”属性未定义

无法读取未定义的属性“长度”,很少发生

$在运行jQuery时未定义

尝试访问视图中的类属性时发生未定义的方法错误

jQuery最近属性返回未定义

无法读取未定义的属性“事件”

jQuery 未定义值点击事件

Javascript:在拖动事件期间类属性变得未定义

JQuery onclick 数据属性“未定义”

在反应中访问事件处理程序内的 JSON 属性时,我得到未定义