我有一個<input type="text">
,我需要在文本框中的文本被改變(包括在jQuery的keydown和keypress處理程序期間執行的操作)之後調用一個函數。在keydown/keypress後得到輸入值
如果我從jQuery處理程序中調用我的函數,我會看到值(e.target.value
)與添加輸入之前的值。由於我不想每次都手動將輸入添加到值上,我如何調用我的函數並讓它使用更新後的值?
我有一個<input type="text">
,我需要在文本框中的文本被改變(包括在jQuery的keydown和keypress處理程序期間執行的操作)之後調用一個函數。在keydown/keypress後得到輸入值
如果我從jQuery處理程序中調用我的函數,我會看到值(e.target.value
)與添加輸入之前的值。由於我不想每次都手動將輸入添加到值上,我如何調用我的函數並讓它使用更新後的值?
如果我理解你的權利則是這樣就是這樣,u能做到這一點
$('input').bind('change keydown keyup',function(){
/// do your thing here.
// use $(this).val() instead e.target.value
});
更新:13年3月5日
請注意:你是最好使用.on()
作爲反對.bind()
在jQuery 1.7中,。對()方法的是將事件處理程序附加到文檔的首選方法。對於早期版本,.bind()方法用於將事件處理程序直接附加到元素。處理程序被附加到jQuery對象中當前選定的元素上,所以這些元素必須存在於對.bind()的調用發生時。要獲得更靈活的事件綁定,請參閱.on()或.delegate()中的事件委託討論。
欲瞭解更多信息jQuery Bind
您可以使用KEYUP - 所以你只稱這是一次關鍵已發佈:
$("#idofinputfield").keyup(function() {
youFunction($(this).val());
});
非常簡單!我一直在掙扎幾個小時。我不敢相信我沒有想到這一點。謝謝你的未來! – 2015-03-09 20:53:49
具有u嘗試了
$('#target').keyup(function(){
alert($(this).val());
});
如果您需要綁定到層次結構中的某個元素,則可以訂閱keyDown處理程序中的keyUp事件。
$("#container").keydown(function (e) {
//here you decide whether to handle the key event, and grab the control that sent the event
var myInput = e.target;
$("#container").one('keyup', function() {
console.log(myInput.val());
// do smth here
});
});
您應該使用event.key之前,它會顯示在文本框中獲取當前的輸入值。
這是代碼。
function validate()
{
document.getElementById("divOutput").innerHTML = event.key;
//I am here returning false so that you can see that this value is being entered before the text is input. This is very useful for number validation purposes.
return false;
}
Enter Number: <input type="text" id="txtInput" onkeydown="return validate()" /><br />
You Entered <div id="divOutput"></div>
+1解決我的問題。 – Sisir 2011-06-30 14:57:38
無法將'keydown'和'keyup'一起指定爲'keypress'? – Dementic 2013-01-28 12:24:05
@Dementic肯定他們可以,但它也取決於爲什麼你的目標是,如果你想要評估一些東西,而keydown被按下了x秒等等......但在大多數情況下,即使'keyup'也足夠了: ),因爲你必須按下才能按下...... :)如果我有任何意義。 – Val 2014-06-10 12:45:40