我有這樣的:onkeypress事件文本框問題
<input type="text" ID="txtMy" name="txtMy" onkeypress="initialize();"/>
而在我的js文件我有:
initialize()
{
var x = $("#txtMy").val();
}
但是,如果我在文本框有 '2',然後我進入4 ,x的值仍然是2.如何解決這個問題?
我有這樣的:onkeypress事件文本框問題
<input type="text" ID="txtMy" name="txtMy" onkeypress="initialize();"/>
而在我的js文件我有:
initialize()
{
var x = $("#txtMy").val();
}
但是,如果我在文本框有 '2',然後我進入4 ,x的值仍然是2.如何解決這個問題?
使用keyup
這裏是你如何做到這一點的unobtrusive way。
HTML
<input type="text" id="txtMy" />
腳本
$(function(){
$("#txtMy").keyup(function (event) {
alert($(this).val())
});
});
工作示例:http://jsfiddle.net/VmELF/4/
如果你要綁定的功能,其被注入到DOM文本框在dom負載之後(可能通過Ajax調用等),你m AY使用jQuery on
$(function(){
$("body").on("keyup","#txtSearchKey",function (event) {
alert($(this).val())
});
});
您在onkeypress中的初始化拼寫與聲明不匹配(inititalize
)。
代替標記事件處理程序,你可以使用jQuery:
var x;
$("#txtMy").on("keyup", function(){
x = $(this).val();
alert(x);
})
刪除了我以前的評論,因爲您已經編輯了該問題並且使其無關緊要。 – 2012-04-18 17:02:01
有幾件事情:
keyup
事件。 keypress
在錄製角色之前開始播放。和keypress
事件工作的jsfiddle都執行之前輸入的密鑰實際上已經出現在文本框中。如果您想在密鑰出現後獲取輸入的新值,請改爲使用keyup
事件。
<input type="text" ID="txtMy" name="txtMy" onkeyup="initialize();"/>
initialize()
{
var x = $("#txtMy").val();
}
您應該考慮使用.on(),因爲你使用的庫反正在JavaScript綁定你的事件處理程序。保持你的邏輯(javascript)從你的視圖(html)分離是一個很好的習慣。
嘗試用'onkeyup'代替 – MilkyWayJoe 2012-04-18 16:59:03
使用內聯屬性來附加事件處理程序是不好的做法。如果你使用像jQuery這樣的框架,那麼真的沒有理由這樣做,因爲它使整個綁定過程變得如此簡單。 – 2012-04-18 17:00:11