जब TEXTAREA और Ctrl+ Enterको दबाया जाता है तो कर्सर को कैसे ट्रिगर किया जाता है? JQuery का उपयोग करना । धन्यवाद
जब TEXTAREA और Ctrl+ Enterको दबाया जाता है तो कर्सर को कैसे ट्रिगर किया जाता है? JQuery का उपयोग करना । धन्यवाद
जवाबों:
आप event.ctrlKey
ध्वज का उपयोग यह देखने के लिए कर सकते हैं कि क्या Ctrlकुंजी दबाया गया है, कुछ इस तरह से:
$('#textareaId').keydown(function (e) {
if (e.ctrlKey && e.keyCode == 13) {
// Ctrl-Enter pressed
}
});
उपरोक्त स्निपेट यहां देखें ।
10
, नहीं 13
।
keypress
इवेंट, keydown
keyup
वास्तव में यह एक चाल है और सभी ब्राउज़रों में काम करता है:
if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey)
js fiddle का लिंक ।
टिप्पणियाँ:
keyCode
, न कि 13 ( बग रिपोर्ट )। इसलिए हमें या तो जाँच करने की आवश्यकता है।ctrlKey
है controlविंडोज, लिनक्स और MacOS (नहीं पर command)। यह भी देखें metaKey
।ctrlKey
मैक पर कमांड कुंजी के अनुरूप है?
if ((e.keyCode == 10 || e.keyCode == 13) && (e.ctrlKey || e.metaKey))
सार्वभौमिक समाधान
यह macOS को भी सपोर्ट करता है: Ctrl+ Enterऔर ⌘ Command+ दोनों Enterको स्वीकार किया जाएगा।
if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
// do something
}
e.ctrlKey
पता लगाता है ⌃ Control
और e.metaKey
पता लगाता है ⌘ Command
। यदि आप व्यवहार को ट्रिगर करने के लिए Ctrl-Enter और Command-Enter दोनों चाहते हैं तो इसका उपयोग करें।
e.keyCode
का 10
मतलब स्वीकार क्यों करते हैं इसके अलावा दर्ज करें 13
? MDN keyCode
दस्तावेज़ीकरण केवल सूचियों 13
दर्ज के लिए एक संभावित मूल्य के रूप में, अनेक ब्राउज़र और ऑपरेटिंग सिस्टम के पार का परीक्षण किया।
मुझे दूसरों के जवाब अधूरे मिले या क्रॉस-ब्राउज़र संगत नहीं।
यह कोड google chrome काम करता है।
$(function ()
{
$(document).on("keydown", "#textareaId", function(e)
{
if ((e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
{
alert('ctrl+enter');
}
});
});
इसे एक सरल लेकिन लचीले JQuery प्लगइन के रूप में बढ़ाया जा सकता है:
$.fn.enterKey = function (fnc, mod) {
return this.each(function () {
$(this).keypress(function (ev) {
var keycode = (ev.keyCode ? ev.keyCode : ev.which);
if ((keycode == '13' || keycode == '10') && (!mod || ev[mod + 'Key'])) {
fnc.call(this, ev);
}
})
})
}
इस प्रकार
$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl')
उपयोगकर्ता द्वारा उस फ़ॉर्म के टेक्सारिया पर ध्यान देने के साथ उपयोगकर्ता द्वारा ctrl-enter दबाए जाने पर एक फ़ॉर्म सबमिट करना चाहिए।
शायद खेल में थोड़ा देर हो जाए, लेकिन यहां मैं उपयोग करता हूं। यह फॉर्म के जमा को भी बाध्य करेगा जो कर्सर का वर्तमान लक्ष्य है।
$(document.body).keypress(function (e) {
var $el = $(e.target);
if (e.ctrlKey && e.keyCode == 10) {
$el.parents('form').submit();
} else if (e.ctrlKey && e.keyCode == 13) {
$el.parents('form').submit();
}
});
if
... else if
" को सरल बना सकते हैं if (e.ctrlKey && (e.keyCode == 10 || e.keyCode == 13))
।