复选框更改未在页面加载时触发

时间:2017-02-21 08:38:09

标签: javascript jquery checkbox

我的页面中有一个按钮和复选框(使用条款) 如果未选中该复选框,则应禁用该按钮。

我想在每次加载时重置情况。 (首先加载或使用后退btn等)复位状态为:不应选中复选框,并禁用btn。 但是当我单击复选框时调用该函数,而不是在加载时调用。 更新:我也测试了.trigger('change')。它也没有用

$(function() {
  $('#termsOfUse').removeAttr('checked');
  $('#termsOfUse').change();
  $('#termsOfUse').change(function() {
    if ($(this).is(":checked")) {
      $('#createBtn').prop('disabled', false);
    } else {
      $('#createBtn').prop('disabled', true);
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
  <input id="termsOfUse" type="checkbox" />
  <label for="termsOfUse" style="display: inline;">
                   <span><a href="/rules">rules</a></span> I am agree with</label>
</div>
<div class="create">
  <input id="createBtn" type="button" value="create" class="btn btn-default btn-success" 
  onclick="location.href = '@Url.Action("Create","NewOne ")'" />
</div>

1 个答案:

答案 0 :(得分:3)

在分配之前,您正在调用.change。

$(function() {
  $('#termsOfUse').prop('checked',false);
  $('#termsOfUse').change(function() {
    $('#createBtn').prop('disabled', !this.checked);
  }).change(); // execute at load
});

你也可以把

<script>
  $('#termsOfUse').prop('checked',false);
  $('#termsOfUse').change(function() {
    $('#createBtn').prop('disabled', !this.checked);
  }).change(); // execute at load
 </script>
 </body>

在您的文件末尾