更改复选框值不会触发Jquery

时间:2017-09-21 20:45:35

标签: javascript jquery

我有一个复选框,我将其标记为已选中,但它不会触发更改功能。这张纸条没有出现。

My code:
 $('#checkbox1').prop("checked", true);

$('#checkbox1').change(function(){
        if ($(this).is(':checked'))
            $('#s-note').show();
        else
            $('#s-note').hide();
    });

4 个答案:

答案 0 :(得分:2)

如果您要将注释设置为默认隐藏并使用基于id的选择器执行此操作,请执行以下操作:

#s-note { display:none; }

然后您的代码无法展示它,因为它还使用基于id的选择器,并且不会比已经生效的选择器更具体。

相反,您必须使用一个选择器将该注释默认为隐藏,该选择器的特定性不如您稍后用于显示/隐藏它的id选择器。那将是一堂课。

此外,在触发事件之前设置事件处理程序 至关重要,以便在事件发生时,已经注册了事件处理程序。

现在,根据您的需求,您并不需要change事件,click会做得很好。最后,为确保您正确触发事件,请使用JQuery的.trigger()方法设置动态。



// Make sure you set up the callback first
$('#checkbox1').on("click", function(){

        if ($(this).is(":checked"))
            $('#s-note').show();
        else
            $('#s-note').hide();
});

// Then just trigger the event
$('#checkbox1').trigger("click");

.hide { display:none; }

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="checkbox1">Test
<div id="s-note" class="hide">Special</div>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

您是否希望在没有用户互动的情况下启动onchange?

你的问题是你在设置处理程序之前设置了检查状态,所以如果这会触发更改,你就不会抓住它。这里真正的问题是使用JavaScript设置属性不会触发更改事件。因此,您需要手动触发更改事件。

$('#checkbox1')
  .prop("checked", true)  // set it to checked
  .on("change", function() {  // bind change event
    $('#s-note').toggle($(this).is(':checked')); // toggle visibility
  }).trigger("change"); //trigger that you need the change to run

答案 2 :(得分:0)

我希望此代码段可以帮助您

Approach 1
$('#idcheckbox').on('change', function() {
  if($(this).is(':checked')) {
    alert('checked');
  } else {
   alert('default ');
  }
});

Approach 2
$('input[type=checkbox]').on('change', function() {
if($(this).is(':checked')) {
    alert('checked');
  } else {
   alert('default ');
  }
});

答案 3 :(得分:0)

我在.net mvc中运行了你的代码,运行正常。

这是隐藏或显示div元素的复选框ID。

<input type="checkbox" id="checkbox1" value=" " />
<div id="s-note" style="display: none">
       <label>Showing</label>
</div>

你想要展示什么?

相关问题