मेरे पास एक HTML फॉर्म है। जावास्क्रिप्ट का उपयोग करके, मैं चाहता हूं:

  1. Enter . पर लाइन ब्रेक सक्षम करें
  2. Enter के लिए डिफ़ॉल्ट ईवेंट अक्षम करें, चाहे आप कहीं भी क्लिक करें (अर्थात जब मैं Enter दबाता हूं, तो मैं स्क्रिप्ट को अपनी फ़ाइल भेजने से रोकना चाहता हूं)

आम तौर पर मुझे पता है कि यह कैसे करना है। नीचे प्रत्येक भाग के लिए मेरा जावास्क्रिप्ट कोड है। मैंने उनका परीक्षण किया और वे अपने आप बिल्कुल ठीक काम करते हैं। (नोट: कई textbox और input एलीमेंट हैं जिन्हें मैंने एक वेरिएबल में सेव किया है।)

textbox.addEventListener("keypress", function(e) {
    var key = e.which;
    if (key == 13) {
        event.preventDefault();
        for(i=0; i<textbox.length; i++) {
            textbox[i].value = textbox[i].value + "\n";
            return false;
        };

    }
});


input.addEventListener("keypress", function(e) {
    var key = e.which;
    if(key=13) {
        event.preventDefault();
        return false;
    }
});

मैंने भी हटाने की कोशिश की

event.preventDefault();

टेक्स्टबॉक्स के लिए मेरे फ़ंक्शन से और इसके बजाय उपयोग कर रहा है

document.addEventListener("keypress", function(e) {
    var key = e.which;
    if (key == 13) {
        event.preventDefault();

    }
});

लेकिन जाहिर है कि यह भी काम नहीं किया। अन्य प्रश्नों पर मैंने पढ़ा है कि आपके पास एक ही कुंजी के लिए एकाधिक ऑब्जेक्ट नहीं हो सकते हैं, लेकिन मुझे यकीन नहीं है कि यह मामला यहां है या नहीं?

मैंने कोशिश की एक और चीज इनपुट के लिए फ़ंक्शन को हटाना और शरीर लोड होने पर फ़ंक्शन को कॉल करना था, जो इस तरह दिखता था:

function disableEnter(e) {
    var key = e.which;

    if(key == 13) {
        event.preventDefault();
    }
}

हालांकि, एक बार फिर यह काम नहीं किया।

क्या दो कार्यों को एक कुंजी से जोड़ना संभव नहीं है? यदि हां, तो क्या कोई ऐसा तरीका है जिससे मैं इससे निजात पा सकूं और फिर भी संपूर्ण पृष्ठ के लिए डिफ़ॉल्ट को रोक सकूं?

संपादित करें: मुझे अभी एहसास हुआ कि यह पूरी तरह से स्पष्ट नहीं हो सकता है: मेरे पास मेरे रूप में कई textarea और input तत्व हैं, जिन्हें मैंने textbox नामक सरणियों में सहेजा है। और input क्रमशः।

0
A.S.J 29 नवम्बर 2017, 18:45

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा करने का एक आसान तरीका यहां दिया गया है। मुझे यकीन नहीं है कि आपका HTML कैसा दिखता है, लेकिन यह एक उदाहरण है जिसमें input और textarea का उपयोग करके एक साधारण रूप दिया गया है:

// set up the node lists
var input = document.getElementsByTagName('input');
var textbox = document.getElementsByTagName('textarea');

// loop through the input elements & add the listener to each
for (var i = 0; i < input.length; i++) {
  addListener(input[i]);
}

// loop through the textarea elements & add the listener to each
for (var j = 0; j < textbox.length; j++) {
  addListener(textbox[j]);
}

// function to assign the listener
function addListener(el) {
  el.addEventListener("keypress", function(e) {
    if (e.which == 13) {  // if ENTER was pressed
      event.preventDefault();
      if (e.target.tagName.toUpperCase() == "TEXTAREA") {  // if a textarea
        e.target.value = e.target.value + "\n";
        return false;
      }
    }
  });
}
<form>
  <input placeholder="Input 1"><br /><br />
  <input placeholder="Input 2"><br /><br />
  <textarea placeholder="Textbox 1" rows=5></textarea>
</form>
0
freginold 29 नवम्बर 2017, 21:55