只有當用戶點擊文本框中的輸入按鈕時,纔會觸發Jquery中的任何事件嗎?或者可以添加任何插件來包含它?如果沒有,我將如何編寫一個快速插件來做到這一點?用戶按下輸入文本框中的JQuery事件?
回答
您可以連接你自己的自定義事件
$('textarea').bind("enterKey",function(e){
//do stuff here
});
$('textarea').keyup(function(e){
if(e.keyCode == 13)
{
$(this).trigger("enterKey");
}
});
這裏是一個插件,爲您提供:(小提琴:http://jsfiddle.net/maniator/CjrJ7/)
$.fn.pressEnter = function(fn) {
return this.each(function() {
$(this).bind('enterPress', fn);
$(this).keyup(function(e){
if(e.keyCode == 13)
{
$(this).trigger("enterPress");
}
})
});
};
//use it:
$('textarea').pressEnter(function(){alert('here')})
不錯。比我發佈的URL簡單得多。我想知道我發佈的文章到底是什麼,爲什麼它需要這麼多的代碼。 – CaptSaltyJack
太晚了,我已經寫了我自己的:P。它也可以在較少的行中完成相同的工作。另外,爲插件使用'$'變量不是一個好主意,因爲它可能會導致衝突。 –
@ClickUpvote,將它封裝在閉包中應該修復 – Neal
繼承人一個jQuery插件,這樣做
(function($) {
$.fn.onEnter = function(func) {
this.bind('keypress', function(e) {
if (e.keyCode == 13) func.apply(this, [e]);
});
return this;
};
})(jQuery);
使用它,包括代碼,並設置它是這樣的:
$(function() {
console.log($("input"));
$("input").onEnter(function() {
$(this).val("Enter key pressed");
});
});
不錯,我會使用'func.apply(this)'調用回調函數,這樣在回調函數內部,您可以像使用'this'那樣正常訪問觸發事件的元素。 –
是的,關於func.apply(這個)的好點,甚至沒有考慮過。 – jzilla
不錯,簡潔,但我會補充說,停止傳播和默認值在大多數情況下是一個好主意,以防止任何表單提交。只需添加'''e.preventDefault(); e.stopPropagation();'''if(e.keyCode)''內的''''。 –
$('#textbox').on('keypress', function (e) {
if(e.which === 13){
//Disable textbox to prevent multiple submit
$(this).attr("disabled", "disabled");
//Do Stuff, submit, etc..
//Enable the textbox again if needed.
$(this).removeAttr("disabled");
}
});
謝謝 - 此解決方案符合我的使用案例。但值得注意的是,一旦完成任何處理,您可能需要添加'$(this).removeAttr(「disabled」);'以重新啓用文本框。 – misterjaytee
應該以及注意,在jQuery的使用live()
一直廢棄的自版本1.7
以來已刪除 jQuery 1.9
。相反,推薦使用on()
。
我會強烈建議採用下列方法進行結合,因爲它解決了以下潛在的挑戰:
- 通過事件綁定到
document.body
和傳球$選擇作爲第二個參數on()
,元素可以安裝,分離,添加或從DOM中刪除,而無需處理重新綁定或雙重綁定事件。這是因爲事件直接附加到document.body
而不是$selector
,這意味着$selector
可以被添加,刪除並再次添加,並且永不加載綁定到它的事件。 - 通過在
on()
之前調用off()
,該腳本可以存在於頁面的主體內,也可以存在於AJAX調用的主體內,而不必擔心偶然發生的雙重綁定事件。 - 通過在
$(function() {...})
內包裝腳本,該腳本可以再次被頁面主體或AJAX調用的主體加載。$(document).ready()
不會因爲AJAX請求而被解僱,而$(function() {...})
會被解僱。
下面是一個例子:
<!DOCTYPE html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
var $selector = $('textarea');
// Prevent double-binding
// (only a potential issue if script is loaded through AJAX)
$(document.body).off('keyup', $selector);
// Bind to keyup events on the $selector.
$(document.body).on('keyup', $selector, function(event) {
if(event.keyCode == 13) { // 13 = Enter Key
alert('enter key pressed.');
}
});
});
</script>
</head>
<body>
</body>
</html>
那應該是event.keyCode == 13 – jasonmcclurg
是真的,並且是固定的。 –
另一個微妙的變化。 我去權力稍微分開,所以我有一個插件,使捕獲回車鍵,然後我就綁定到事件正常:
(function($) { $.fn.catchEnter = function(sel) {
return this.each(function() {
$(this).on('keyup',sel,function(e){
if(e.keyCode == 13)
$(this).trigger("enterkey");
})
});
};
})(jQuery);
然後使用:
$('.input[type="text"]').catchEnter().on('enterkey',function(ev) { });
這變體允許您使用事件委託(綁定到尚未創建的元素)。
$('body').catchEnter('.onelineInput').on('enterkey',function(ev) { /*process input */ });
HTML代碼: -
<input type="text" name="txt1" id="txt1" onkeypress="return AddKeyPress(event);" />
<input type="button" id="btnclick">
Java腳本代碼
function AddKeyPress(e) {
// look for window.event in case event isn't passed in
e = e || window.event;
if (e.keyCode == 13) {
document.getElementById('btnEmail').click();
return false;
}
return true;
}
您的窗體沒有默認提交按鈕
- 1. 當用戶按下輸入時的JQuery事件?
- 2. jQuery文本框用戶輸入長度
- 3. 按鍵事件:如何檢測用戶在文本框中輸入的位置
- 4. 如何找出用戶在文本輸入中按下「輸入」?
- 5. 如何使按鈕事件中寫入輸出的文本框
- 6. 用戶輸入文本框
- 7. 如何在keydown事件後按下輸入文本框中的虛擬鍵盤
- 8. 聽取輸入鍵按下文本框
- 9. 用戶在文本框中的輸入
- 10. 哪個事件屬於「使用jQuery將文本輸入到文本框中」
- 11. 如何在文本框中添加按鍵事件以捕捉用戶的「輸入」輸入
- 12. 如何在用戶按下從Jquery中的文本框輸入時只調用一個按鈕點擊功能?
- 13. jQuery的按鍵事件獲取輸入的文本值
- 14. php文本框輸入事件
- 15. VB.NET:如何按下輸入文本框時執行jQuery代碼
- 16. 如何處理調用輸入按鈕點擊事件的多個文本框的輸入事件?
- 17. HTML輸入=文本輸入時,按下
- 18. 當我在文本框中按下輸入按鈕時發射
- 19. 加入新行字符(BR),但BR必須在文本框中被隱藏在用戶按下jQuery中輸入
- 20. 消防事件輸入按鍵爲文本框
- 21. 如何在用戶按下時啓動動畫在文本框中輸入
- 22. Jquery限制輸入框中的文本
- 23. 執行按鈕單擊事件時,用戶按下在文本框
- 24. jquery彈出輸入文本插件下
- 25. 捕捉輸入按下的事件
- 26. 保存輸入文本下方的文字輸入框輸入
- 27. 組合框傳輸文本到文本框事件中輸入或從下拉列表中選擇
- 28. asp.net文本框中的按鍵事件
- 29. VB.NET中文本框的按鍵事件
- 30. WPF中的文本框按鍵事件
值得一提的是,在一個場景輸入檢測以防止fo rm提交,「keyup」事件不是最優的,因爲表單檢測到keydown上的提交。因此,在這種情況下,「keydown」或「keypress」可能會更好。 – TechNyquist
請注意,bind()在jQuery 3.0中已棄用。 –