तो मेरे पास मेरी वेबसाइट पर एक टेक्स्ट बॉक्स है और मैंने कुछ शब्दों को इस्तेमाल होने से रोकने के लिए इसे कोड किया है।

window.onload = function() {
  var banned = ['MMM', 'XXX'];

  document.getElementById('input_1_17').addEventListener('keyup', function(e) {
    var text = document.getElementById('input_1_17').value;

    for (var x = 0; x < banned.length; x++) {
      if (text.toLowerCase().search(banned[x]) !== -1) {
        alert(banned[x] + ' is not allowed!');
      }

      var regExp = new RegExp(banned[x]);

      text = text.replace(regExp, '');
    }

    document.getElementById('input_1_17').value = text;
  }, false);
}

कोड पूरी तरह से काम करता है और टेक्स्ट बॉक्स से टेक्स्ट को हटा देता है जब टाइप किए गए सभी अक्षर लोअरकेस होते हैं। समस्या यह है कि जब पाठ में एक अपरकेस अक्षर होता है तो यह त्रुटि देगा लेकिन शब्द को टेक्स्ट बॉक्स से नहीं हटाया जाएगा।

-1
vctburk 30 सितंबर 2019, 16:20

3 जवाब

आप जो कर सकते हैं वह वास्तव में दोनों चर को या तो सभी कैप्स या सभी लोअरकेस में परिवर्तित कर देता है।

if (text.toLowerCase().includes(banned[x].toLowerCase())) {
  alert(banned[x] + ' is not allowed!');
}

परीक्षण नहीं किया गया लेकिन यह काम करना चाहिए। search का उपयोग करने की कोई आवश्यकता नहीं है क्योंकि आपको वैसे भी अनुक्रमणिका की आवश्यकता नहीं है। includes का उपयोग करना क्लीनर है। दस्तावेज़ शामिल हैं

0
I am L 30 सितंबर 2019, 13:34

ऐसा लगता है कि आप कुछ अनुचित की उम्मीद कर रहे थे। लोअरकेस स्ट्रिंग्स कभी भी अपरकेस अक्षरों वाले स्ट्रिंग्स से मेल नहीं खाएंगे।

या तो तुलना के लिए दोनों को रूपांतरित करें या लोअरकेस प्रतिबंधित स्ट्रिंग्स का उपयोग करें। पूर्व अधिक विश्वसनीय होगा, भविष्य की मानवीय त्रुटि को प्रक्रिया से बाहर कर देगा।

0
isherwood 30 सितंबर 2019, 13:28

RegExp एक है अच्छी दिशा, बस आपको कुछ झंडे चाहिए (इसे केस बनाने के लिए- i असंवेदनशील, और global - इसलिए सभी घटनाओं को बदलें):

var text="Under the xxx\nUnder the XXx\nDarling it's MMM\nDown where it's mmM\nTake it from me";
console.log("Obscene:",text);
var banned=["XXX","MMM"];
banned.forEach(nastiness=>{
  text=text.replace(new RegExp(nastiness,"gi"),"");
});
console.log("Okay:",text);
1
tevemadar 30 सितंबर 2019, 13:37