如何使用JQuery更改onClick复选框的值?

Bal*_*ala 8 javascript forms jquery ternary-operator dom-events

在这里,我试图在单击它时更改以下复选框的值.在下面的代码中,我尝试将复选框的值更改为1,并在取消选中时将值更改为0.但它只需要错误的条件,当取消选中复选框时,值会更改为0但是当选中时它不会更改为1.任何建议如何解决这个问题?

<input type="checkbox" id="read" name="permission[]" onClick="($(this).checked)?$(this).attr('value',1):$(this).attr('value',0)"/>
Run Code Online (Sandbox Code Playgroud)

kap*_*apa 23

我真的不明白你为什么要这样做(当未选中时,复选框的值不会被提交).

checkedDOM元素的属性会永远告诉你它是否被选中与否.所以你可以得到this.checked(Javascript DOM)或$(this).prop('checked')(jQuery包装器).

如果你真的需要,你应该这样做:

onclick="$(this).attr('value', this.checked ? 1 : 0)"
Run Code Online (Sandbox Code Playgroud)

甚至

onclick="$(this).val(this.checked ? 1 : 0)"
Run Code Online (Sandbox Code Playgroud)

甚至更好,不要使用内联事件处理程序(如onclick),但使用jQuery的事件处理包装器(.on('click').click()旧版本).

使用jQuery事件处理的jsFiddle演示


您的方法存在问题

您正在使用$(this).checked获取复选框的状态.jQuery对象(由$函数返回的对象)没有checked属性,因此它将是undefined.在Javascript中,这undefined是一个虚假值,这就是为什么你的复选框的值总是如此0.

  • 感谢您提供的最佳答案,使我免于再浪费一天的时间进行搜索 (3认同)