【问题标题】:First on-click on checkbox displays modal popup window. How can i make on-second-click unchecks the checkbox?首先单击复选框显示模式弹出窗口。如何使第二次单击取消选中该复选框?
【发布时间】:2017-01-01 07:24:16
【问题描述】:

我正在使用通过单击主页中的复选框触发的 Bootstrap 模式弹出窗口。弹出窗口包含几个文本框,用于根据用户输入从数据库中搜索。然后在输入并单击搜索按钮后,表格将在同一个弹出窗口中显示检索到的数据。然后,用户从表格中选择一行后,选择的数据将显示在主页面各自的文本框中,并且复选框将被选中。

我的计划是在第二次单击时取消选中复选框(考虑用户是否突然决定取消他们的决定 - 选中复选框)。我试过了,但它没有取消选中该复选框。相反,每次单击复选框都会弹出窗口,并且复选框不会再取消选中。

$('#inputNew').on('hidden.bs.modal', function (e) {
  document.getElementById("inputNewCheckbox").checked = true;
  document.getElementById("inputMother").style.display = 'block';
  document.getElementById("inputMotherlabel").style.display = 'block';
  var value = $('#myPopupInput1').val();
  $('#inputMother').val(value);
  $('#inputNew').modal('hide');
});

$('#inputNew').on('click', '#SearchMother', function () {
  var value = $('#myPopupInput1').val();
  $('#inputMother').val(value);
  $('#inputNew').modal('hide');
});

if ($checkbox.data('waschecked') == true && $('#inputMother') != '') {
  if ($('#inputNewCheckbox').on("click", function () {
    $('#inputNewCheckbox').prop('checked', false);
  }));

}

这是视图页面中的复选框输入:

<input type="checkbox" name="inputNew" value="inputNew" id="inputNewCheckbox" data-toggle="modal" data-target="#inputNew" data-waschecked="false"> New

对于复选框取消选中部分,我也尝试过

if ($('#inputNewCheckbox').prop('checked', true) && $('#inputMother') != '') {
        if ($('#inputNewCheckbox').on("click", function () {
                    document.getElementById("inputNewCheckbox").checked = false;
            }));               
    }

但是当我运行时,该复选框默认处于选中状态,而取消选中则不起作用。加上模态弹出窗口出现。

我也试过了

if (document.getElementById("inputNewCheckbox").checked = true && $('#inputMother') != '') {
        if ($('#inputNewCheckbox').on("click", function () {
                    document.getElementById("inputNewCheckbox").checked = false;
            }));              
    }

也与上面的代码相同的输出..有人可以帮帮我吗?我该如何解决这个问题?

【问题讨论】:

  • if ($('#inputNewCheckbox').prop('checked', true) &amp;&amp; $('#inputMother') != '') { if ($('#inputNewCheckbox').on("click", function () { document.getElementById("inputNewCheckbox").checked = false; })); } 看起来很不对劲。它是if ($('#inputNewCheckbox').is(':checked')),您不能在事件处理程序上使用 if:if ($('#inputNewCheckbox').on("click", function () {,如果您在单击时将复选框设置为 false,它将始终为 false `
  • @mplungjan 感谢您的建议。那么我应该怎么做才能取消选中第二次点击?我已经没有想法了,我也尝试过搜索,但找不到任何符合我情况的内容
  • 问题太多了,我无法深入研究。主要问题之一是 DOM 和 jQuery 的可怕组合。 $('#inputNew').on('hidden.bs.modal', function (e) { $("#inputNewCheckbox").prop("checked",true); $("#inputMother").show(); $("#inputMotherlabel").show(); var value = $('#myPopupInput1').val(); $('#inputMother').val(value); $('#inputNew').modal('hide'); });
  • @mplungjan 所以换句话说,我应该把这两个代码分开?
  • 你需要清理你的代码——它可能对这个问题没有帮助,但它肯定会帮助你或其他人找到它

标签: javascript asp.net-mvc bootstrap-modal


【解决方案1】:

您可能最好在复选框上监听更改事件,并且仅在选中复选框时显示您的模式:

$('#inputNewCheckbox').on('change', function(e){

    var _this = $(this);

    if(_this.is(':checked')){

        /* show your modal */

    }

});

请参阅 MDN 上的 change - Event reference:checked pseudo-class

【讨论】:

  • 这似乎是个好主意!为什么我没有想到呢? >.
  • 成功了;非常感谢!您能帮我解决有关访问外部 javascript 文件的另一个问题吗?这是link
猜你喜欢
  • 1970-01-01
  • 2019-04-17
  • 2019-04-16
  • 1970-01-01
  • 1970-01-01
  • 2018-06-29
  • 2020-04-05
  • 2021-04-09
  • 1970-01-01
相关资源
最近更新 更多