2015-12-14 91 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

**你是人類**還是做了一個自動機器人發表的評論?;) –