通过使用Jquery选中复选框来更改隐藏名称

时间:2014-03-26 06:00:05

标签: javascript jquery checkbox

当我单击复选框时,应删除复选框的相应隐藏值或使用jquery或JavaScript更改隐藏输入字段的名称。

HTML:

   <tr>
    <td><input type="checkbox" value="noseat" id="seat" name="seat[]" onclick="return oncl(this);">
          Check&nbsp;&nbsp;
          <input type="hidden" value="off" name="seat[]" class="hiddensesat">         
        </td>
        <td><input type="checkbox" value="noseat" id="seat" name="seat[]" onclick="return oncl(this);">
          Check&nbsp;&nbsp;
          <input type="hidden" value="off" name="seat[]" class="hiddensesat">         
        </td>
        <td><input type="checkbox" value="noseat" id="seat" name="seat[]" onclick="return oncl(this);">
          Check&nbsp;&nbsp;
          <input type="hidden" value="off" name="seat[]" class="hiddensesat">         
        </td>
      </tr>

JS:

function oncl(){
  alert($(this).is(':checked'));
  if($(this).is(':checked')){
        alert($(this).closest('td').find(".hiddensesat").val());
    }
}

警告始终显示为false;

1 个答案:

答案 0 :(得分:3)

您将被点击的元素引用作为参数传递,因此您需要更改函数定义以接受参数并使用它而不是在函数内使用this

function oncl(el) {
    alert(el.checked);
    $(el).closest('td').find(".hiddensesat").val(el.checked ? 'on' : 'off')
}

作为旁注,我建议使用jQuery事件处理程序而不是内联函数,比如

//dom ready handler
jQuery(function () {
    //change event handler for checkbox elements with name seat[]
    $('input[type="checkbox"][name="seat[]"]').change(function () {
        $(this).closest('td').find(".hiddensesat").val(this.checked ? 'on' : 'off')
    });
})