2013-11-28 29 views
0

我有這樣jQuery顯示輸入文本上的空字符串?

<form action=""> 
    <label for="name">Name</label> 
    <input type="text" id="name" /> 
</form> 


<script type="text/javascript"> 
    jQuery(document).ready(function() { 
    var Name = jQuery('#name').val(); 
    jQuery('#name').blur(function() { 
     console.log(Name); 
    }); 
    }); 
</script> 

但在這裏,當我在輸入文本字段中輸入任何值,它顯示像 (an empty string)錯誤的一種形式。那麼有人可以告訴我這裏有什麼問題嗎?如何解決這個問題?

+4

您沒有關閉輸入的id,也沒有使用空的'action'標籤。 – MikaldL

+0

是的,關於ID的關閉,但空操作很好。它只是假設當前的網址,如果它沒有通過一個。 – Archer

回答

3

這條線:

var Name = jQuery('#name').val(); 

是一次性操作,該代碼執行時的Name值設置到輸入值。它會而不是當元素的值發生變化時,神奇地更新Name的值(爲什麼很多人會得到這樣的印象?)。你需要做到這一點:

jQuery(document).ready(function() { 
    jQuery('#name').blur(function() { 
     console.log(this.value); 
    }); 
}); 

我剪了現在毫無意義Name變量,只是使用的元素引用(this)直接得到它的價值屬性,而不是使用jQuery功能。

+0

很好解釋! –

4
<input type="text" id="name /> 

應該

<input type="text" id="name" /> 

工作小提琴:http://jsfiddle.net/TdLH2/

+1

我認爲你的回答不正確,OP可能有輸入錯誤,請在有人投票或選擇標誌之前更正答案 – Vamsi

+0

你是對的,它無法在模糊函數外訪問Name變量。 – feddus

2

名稱變量應的onblur處理程序中進行設置:

jQuery('#name').blur(function() { 
    var Name = jQuery(this).val(); //or this.value 
    console.log(Name); 
}); 
0

嘗試

<form action=""> 
    <label for="name">Name</label> 
    <input type="text" id="name" /> 
</form> 


<script type="text/javascript"> 
    jQuery(document).ready(function() 
    { 
    jQuery('#name').blur(function() { 
    var Name = jQuery("#name").val(); 
    jQuery("#name").blur(function() 
    { 
     console.log(Name); 
    }); 
    }); 
    }); 
</script> 
0

如果你想CONSOLE.LOG無論是鍵入到框中,你可以這樣做:

<script> 
    jQuery(document).ready(function() { 
    jQuery('#name').keyup(function() { 
     var Name = jQuery('#name').val(); 
     console.log(Name); 
    }); 
    }); 
</script> 

此刻,你得到的#name在頁面加載的值,這將是"",一個空的字符串。因爲什麼都沒有輸入。

相關問題