javascript - मैं "शिफ्ट+एंटर" का पता कैसे लगा सकता हूं और टेक्स्टरेरा में एक नई लाइन उत्पन्न कर सकता हूं?




jquery html (6)

अगर AngularJS का उपयोग कर किसी को भी एक ही समस्या है तो ng-keyup का उपयोग करके ng-keyup समाधान यहां दिया गया है।

ng-keyup="$event.keyCode == 13 && !$event.shiftKey && myFunc()"

वर्तमान में, यदि व्यक्ति टेक्स्ट क्षेत्र के अंदर प्रवेश करता है, तो फॉर्म सबमिट होगा।
अच्छा, मुझे वह चाहिए।

लेकिन जब वे Shift + Enter टाइप करते हैं , तो मैं textarea को अगली पंक्ति में ले जाना चाहता हूं: \n

मैं JQuery या सादे जावास्क्रिप्ट में जितना संभव हो सके उतना सरल कैसे कर सकता हूं?


अगर कोई अभी भी सोच रहा है कि jQuery के बिना ऐसा कैसे करें।

एचटीएमएल

<textarea id="description"></textarea>

जावास्क्रिप्ट

const textarea = document.getElementById('description');

textarea.addEventListener('keypress', (e) => {
    e.keyCode === 13 && !e.shiftKey && e.preventDefault(); 
})

वेनिला जेएस

var textarea = document.getElementById('description');

textarea.addEventListener('keypress', function(e) {
    if(e.keyCode === 13 && !e.shiftKey) {
      e.preventDefault();
    }
})

क्यों नहीं

$(".commentArea").keypress(function(e) {
    var textVal = $(this).val();
    if(e.which == 13 && e.shiftKey) {

    }
    else if (e.which == 13) {
       e.preventDefault(); //Stops enter from creating a new line
       this.form.submit(); //or ajax submit
    }
});

मुझे यह धागा शिफ्ट + किसी भी कुंजी को नियंत्रित करने के लिए एक रास्ता तलाश रहा है। मैंने जो भी आवश्यक था उसे पूरा करने के लिए इस संयुक्त कार्य को बनाने के लिए मैंने अन्य समाधानों को चिपकाया। मुझे आशा है कि यह किसी और की मदद करेगा।

function () {
    return this.each(function () {
    $(this).keydown(function (e) {
        var key = e.charCode || e.keyCode || 0;
        // Shift + anything is not desired
        if (e.shiftKey) {
            return false;
        }
        // allow backspace, tab, delete, enter, arrows, numbers 
        //and keypad numbers ONLY
        // home, end, period, and numpad decimal
        return (
            key == 8 ||
            key == 9 ||
            key == 13 ||
            key == 46 ||
            key == 110 ||
            key == 190 ||
            (key >= 35 && key <= 40) ||
            (key >= 48 && key <= 57) ||
            (key >= 96 && key <= 105));
    });
});

सबसे पहले, टेक्स्टटेरा के अंदर एंटर दबाकर फ़ॉर्म सबमिट नहीं होता है जब तक कि आपके पास ऐसा करने के लिए स्क्रिप्ट नहीं होती है। यही वह व्यवहार है जिसे उपयोगकर्ता उम्मीद करता है और मैं इसे बदलने के खिलाफ अनुशंसा करता हूं। हालांकि, अगर आपको ऐसा करना है, तो सबसे आसान तरीका यह है कि स्क्रिप्ट ढूंढने के लिए फॉर्म सबमिट करें और इसे बदलें। कोड की तरह कुछ होगा

if (evt.keyCode == 13) {
    form.submit();
}

... और आप इसे बदल सकते हैं

if (evt.keyCode == 13 && !evt.shiftKey) {
    form.submit();
}

अगर आपके पास किसी कारण से इस कोड तक पहुंच नहीं है, तो आपको टेक्स्ट के अंत में नहीं होने पर भी सभी प्रमुख ब्राउज़रों में काम करने के लिए निम्न कार्य करने की आवश्यकता है:

जेएसफ़िल्ड: http://jsfiddle.net/zd3gA/1/

कोड:

function pasteIntoInput(el, text) {
    el.focus();
    if (typeof el.selectionStart == "number"
            && typeof el.selectionEnd == "number") {
        var val = el.value;
        var selStart = el.selectionStart;
        el.value = val.slice(0, selStart) + text + val.slice(el.selectionEnd);
        el.selectionEnd = el.selectionStart = selStart + text.length;
    } else if (typeof document.selection != "undefined") {
        var textRange = document.selection.createRange();
        textRange.text = text;
        textRange.collapse(false);
        textRange.select();
    }
}

function handleEnter(evt) {
    if (evt.keyCode == 13 && evt.shiftKey) {
        if (evt.type == "keypress") {
            pasteIntoInput(this, "\n");
        }
        evt.preventDefault();
    }
}

// Handle both keydown and keypress for Opera, which only allows default
// key action to be suppressed in keypress
$("#your_textarea_id").keydown(handleEnter).keypress(handleEnter);

JQuery हॉटकी प्लगइन और इस कोड का प्रयोग करें

jQuery(document).bind('keydown', 'shift+enter', 
         function (evt){ 
             $('textarea').val($('#textarea').val() + "\n");// use the right id here
             return true;
         }
);






css