javascript - jQuery复选框更改和单击事件

标签 javascript jquery checkbox event-handling

$(document).ready(function() {
  //set initial state.
  $('#textbox1').val($(this).is(':checked'));

  $('#checkbox1').change(function() {
    $('#textbox1').val($(this).is(':checked'));
  });

  $('#checkbox1').click(function() {
    if (!$(this).is(':checked')) {
      return confirm("Are you sure?");
    }
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="checkbox1"/><br />
<input type="text" id="textbox1"/>

这里 .change() 用复选框状态更新文本框值。我使用 .click() 来确认取消选中的操作。如果用户选择取消,复选标记将恢复,但 .change() 在确认之前触发。

这会使事情处于不一致的状态,并且在选中复选框时文本框会显示为 false。

如何处理取消并保持文本框值与检查状态一致?

最佳答案

测试于 JSFiddle并按照您的要求进行操作。这种方法具有在单击与复选框关联的标签时触发的额外好处。

更新答案:

$(document).ready(function() {
    //set initial state.
    $('#textbox1').val(this.checked);

    $('#checkbox1').change(function() {
        if(this.checked) {
            var returnVal = confirm("Are you sure?");
            $(this).prop("checked", returnVal);
        }
        $('#textbox1').val(this.checked);        
    });
});

原答案:

$(document).ready(function() {
    //set initial state.
    $('#textbox1').val($(this).is(':checked'));

    $('#checkbox1').change(function() {
        if($(this).is(":checked")) {
            var returnVal = confirm("Are you sure?");
            $(this).attr("checked", returnVal);
        }
        $('#textbox1').val($(this).is(':checked'));        
    });
});

关于javascript - jQuery复选框更改和单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7031226/

相关文章:

javascript - 如何在加载时保存图像的宽度和高度?

WPF单击标签更改复选框isChecked属性

javascript - 如何在 dijit.form.TimeTextBox 中设置 timePattern 以显示小时数 :minutes am|pm

jquery - 使用 Jquery 按值对选项进行排序

javascript - 在 jquery 中立即检查空字段

javascript - 如何让单选按钮工作两个任务?

javascript - 复选框 JavaScript 不更新值

javascript - Uncaught ReferenceError : PhotoSwipe is not defined at openPhotoSwipe

javascript - JS密码确认

javascript 匹配替换文本