【问题标题】:javascript onchange checkboxes still select on canceljavascript onchange 复选框仍然选择取消
【发布时间】:2014-04-02 06:59:39
【问题描述】:
<script>
function no_email_confirm() { 
  if (document.getElementsByName("no_email")[0].checked == false) {
    return true;
  } else {
   var box= confirm("Sure?");
    if (box==true)
        return true;
    else
       document.getElementsByName("no_email")[0].checked == false;
  }
}

</script>

这是我的复选框的 HTML:

 <input type="checkbox" id="no_email"  name="no_email" onchange="no_email_confirm()"></input>

由于某种原因,这让我在第一次选中该框时弹出确认,但之后没有任何点击。此外,即使我单击“取消”,它仍然会选中该复选框。我在这里搜索过,出于某种原因,无论我尝试什么,我都无法使其正常工作。

它应该确认他们是否真的要选中该框,如果他们选择“是”,那么它会选中它,如果不是,那么它不会选中它。我可以在没有名称 no_email 的情况下使用它,但我无法更改它..

有人有什么想法吗?

【问题讨论】:

  • 您还没有查看浏览器的错误控制台,是吗? NodeList(由getElementsByName() 返回)没有checked 属性。您要么需要遍历 NodeList,要么指定一个索引来确定要测试的元素,例如:document.getElementsByName(no_email)[0].checked == false
  • 所以这个必须默认勾选?
  • @DavidThomas 我更新了上面的代码,现在每次都会弹出,但是选择取消时它仍然选中该框。是不是因为默认不勾选?
  • return false 当“取消”被点击时,如果你不希望它被选中。

标签: javascript checkbox onchange confirm


【解决方案1】:

看起来你有几个错误,最明显的是使用==,而你的意思可能是=。相反,添加一个事件侦听器并确保分配有效:

var box = document.querySelector('#no_email');

box.addEventListener('change', function no_email_confirm() { 
  if (this.checked == false) {
    return true;
  } else {
   var confirmation= confirm("This means that the VENDOR will NOT RECEIVE ANY communication!!!!");
    if (confirmation)
        return true;
    else
       box.checked = false;
  }
});

http://jsfiddle.net/A3VGg/1/

【讨论】:

  • 这适用于 jsfiddle,但即使只是将其复制并粘贴到它所在的页面中,它也会停止工作。我必须检查一下,一定是其他原因导致它保持检查状态。感谢您的回答!
  • @will 没问题。如果我有帮助,请不要忘记接受!
猜你喜欢
  • 2018-05-17
  • 2018-04-20
  • 1970-01-01
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多