2017-03-17 94 views
0

困難我真的很新的JavaScript/jQuery和我有困難的時候理解以下thisquery事件:有人請解釋我有

我在頁面的頭部加載我的腳本。

我有一個輸入的形式有點像這樣...

<input id='registeremail' type='email; name='email' onblur=checkemail() > 

<button id='btn1'>Hello</button> 

在上述情況下我有,因爲在我的腦海部分所指出的不工作如下。

<script> 

    $(document).ready(function(){ 

    function checkemail() { 
     checkthis = $('#registeremail').val(); 
     $('#btn1').text(checkthis); 
    } 

    }); 

</script> 

的唯一途徑,我可以得到它的工作是這樣的

請輸入形式,就像上面

<script> 

$(document).ready(function(){ 

    $('#registeremail').focusout(function() { 
     checkthis = $('#registeremail').val(); 
     $('#btn1').text(checkthis); 

    }); 

</script> 

這是推動我堅果。 onblur與jquery不兼容?我錯過了什麼是顯而易見的事情?

感謝

+0

因爲您將函數放入文檔中,它不在全局範圍內。 Java不同於JavaScript。 – epascarello

+0

'onblur = checkemail()' - 應該是'onblur =「checkemail()」'。在這裏或在你的代碼中輸入錯誤? – CynePhoba12

+1

你在這裏有錯字'type ='email;'它應該是'type ='email'' –

回答

1

名稱,它們在onXXX屬性使用的在全球範圍內擡頭。你的函數在$(document).ready()之內,所以函數名只在該範圍內可用,不在全局範圍內。

通常不需要在$(document).ready()中放置函數定義。這只是在加載文檔之後才能運行的代碼所需要的。函數定義不會立即運行,它們只是保存定義。如果函數定義僅由$(document).read()中的其他函數使用,可以將函數定義放在那裏,以避免污染全局範圍。但是,如果你想從全球範圍的所有功能,你需要把它拿出來。

此外,養成引用屬性值的習慣。只有當該值包含某些特殊字符(如空格或>)時纔是嚴格需要的,但總的來說這是個好主意。

onblur='checkemail()'