查看在单击复选框之前是否一直单击该复选框

See if check box is clicked until it is clicked

本文关键字:单击 复选框 是否 一直      更新时间:2023-09-26

我正在考虑如何制作一个Are You Human复选框,但我遇到了一个问题(Code At The End)。我试着让它看看它是否被点击,直到它被点击。我试过onclick,但没用。

window.onload = function() {
  var input = document.getElementById('ruhuman');
  function check() {
    if (input.checked) {
      ruhuman.checked = true;
      if (event.originalEvent === undefined) {
        ruhuman.human = false;
      } else {
        ruhuman.human = true;
      }
    }
    alert(ruhuman.human);
    alert(ruhuman.checked);
  }
  input.onchange = check;
  check();
}
<input type="checkbox" id="ruhuman" class="ruhuman" onclick="check()" required="required">
<label>R U Human?</label>

编辑:谢谢你的帮助!成品在http://ruhuman.github.io/.

对于回答的人,我可以把你的github放在那里寻求你的帮助!

originalEvent是JQuery,而不是JavaScript。一个解决方法是测试screenX和screenY——如果是人,它们将根据复选框的位置具有一些值。此外,您可以从html中删除onclick,并将您的点击事件如下所示:

document.getElementById ("ruhuman").addEventListener("click", function(e){
    if (this.checked) {
      ruhuman.checked = true;
      if (e.screenX && e.screenY) {
        ruhuman.human = true;
      } else {
        ruhuman.human = false;
      }
    }
    console.log(ruhuman.human);
    console.log(ruhuman.checked);
  });

JS Fiddle演示

这样可以:https://jsfiddle.net/rz4pmp5L/3/

var input = document.getElementById('ruhuman');
var ruhuman = 
{
  checked: false
};
function check() 
{
  if (input.checked) 
  {
    ruhuman.checked = true;
  }
  alert(ruhuman.checked);
}
input.onchange = check;
check();

问题是(至少)根本没有定义ruhuman