जब 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इवेंट, keydownkeyup
वास्तव में यह एक चाल है और सभी ब्राउज़रों में काम करता है:
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))।