2015-12-14 93 views
1

我看到我可以如何制作一个Are Your Human复选框,但我遇到了问题(代码结束)。我试图让它看到它是否被点击直到被点击。我试过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的帮助!

+0

你来了一个浏览器错误?因为你一遍又一遍地重复进入函数,似乎从未出现过它 – Madivad

+2

@Madivad似乎OP在窗口加载后调用该函数,这就是全部。除此之外,它似乎不是递归的。 – BuddhistBeast

+1

我的不好,我错过了它是所有内部负载:( – Madivad

回答

2

​​是JQuery,而不是JavaScript。一个解决方法是测试screenX和screenY - 如果它是一个人类,这些会根据复选框的位置有一些值。此外,您还可以remove the onclick from your html和领带点击事件是这样的:

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 Demo

+0

thx傻我!!! – arodebaugh

1

这工作: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没有定义的。

+0

这个测试是否勾选复选框,它不能确定检查是通过代码还是人工完成的 –

+0

@devlincarnate这没有被问到。 – Piwwoli

+2

**你是人类**还是做了一个自动机器人发表的评论?;) –