मैंने एक कोड लिखा है जो केवल अक्षरों को टेक्स्ट फ़ील्ड में टाइप करने की अनुमति देता है, लेकिन यह काम नहीं कर रहा है। क्या आप मुझे त्रुटियों को खोजने में मदद कर सकते हैं, और कृपया समाधान ढूंढ सकते हैं।

function allLetter(inputtxt) {
  var letters = /^[A-Za-z]+$/;
  if(inputtxt.value.match(letters)){
      return true;
  }else{
      alert('Please input letters only');
      return false;
  }
} 
<form action="#" id="form1" name="form1" method="post">
  <input name="Forename" type="text" required="required" id="Forename2" onclick="allLetter(document.form1.text)"/>
</form>
1
Ameer 3 अप्रैल 2018, 18:14

5 जवाब

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

आप ईवेंट को onkeyup में बदल सकते हैं, क्योंकि onclick के साथ इनपुट नहीं हुआ है और मान का परीक्षण नहीं किया जा सकता है।

फिर आपको तत्व को सौंपने की आवश्यकता है, वास्तविक तत्व के संदर्भ में this का उपयोग करना सबसे आसान है।

नॉट वांटेड कैरेक्टर की खोज के लिए, आप वांटेड कैरेक्टर के लिए पूरी स्ट्रिंग की जांच कर सकते हैं।

function allLetter(inputtxt) {
    var letters = /^[a-z]*$/i;
    if (!inputtxt.value.match(letters)) {
        alert('Please input letters only');
    }
}
<form action="#" id="form1" name="form1" method="post">
  <input name="Forename" type="text" required="required" id="Forename2" onkeyup="allLetter(this)" />
</form>
1
Nina Scholz 3 अप्रैल 2018, 16:43

आपको HTML पैटर्न विशेषता का उपयोग करना चाहिए। इसके बारे में यहां पढ़ें।

आपको इस बात की जानकारी होनी चाहिए कि आपका कोड उपयोगकर्ता को फ़ील्ड में टाइप करने से नहीं रोकता है, लेकिन केवल उसे सचेत करता है कि उसके द्वारा उपयोग किए गए प्रतीक हर बार फ़ील्ड में क्लिक करने पर सही नहीं होते हैं। आप इसे ऑनकीडाउन में बदल सकते हैं और इससे यह और स्पष्ट हो जाएगा, लेकिन फिर भी आपको ऊपर बताए गए पैटर्न समाधान को प्राथमिकता देनी चाहिए।


यह भी जान लें कि क्लाइंट की ओर से आने वाले हर डेटा को सर्वर-साइड पर जांचना होता है और क्लाइंट साइड पर (जैसे JS, HTML... के माध्यम से) ठीक से साफ नहीं किया जा सकता है। ग्राहक पक्ष पर जाँच का उपयोग केवल उपयोगकर्ता-अनुभव को बेहतर बनाने के लिए किया जा सकता है, सुरक्षा में सुधार के लिए नहीं।

0
daudprobst 3 अप्रैल 2018, 15:28

आप जो करना चाहते हैं उसे करने के लिए आप पैटर्न का उपयोग कर सकते हैं। https://www.w3schools.com/tags/att_input_pattern.asp

<form action="#" id="form1" name="form1" method="post">
    <input name="Forename" type="text" required="required" id="Forename2" pattern="^[A-Za-z]+$" />
</form>

लेकिन ध्यान दें कि सबमिट पर ऐसे कोड को सर्वर साइड मान्य किया जाना चाहिए। एचटीएमएल इनपुट पैटर्न और जावास्क्रिप्ट को ओवरराइड करना छोटा है। तो एक सर्वर को post पर सभी इनपुट को मान्य करना चाहिए।

आप इसे वहाँ आज़मा सकते हैं https://www.w3schools.com/tags/ tryit.asp?filename=tryhtml5_input_pattern

0
Trevor 3 अप्रैल 2018, 15:23

document.form1.text आपके टेक्स्ट इनपुट फ़ील्ड तक पहुंचने का मान्य तरीका नहीं है। document.forms[0].elements['Forename'] काम करता है। अधिक विवरण के लिए MDN पर दस्तावेज़ और प्रपत्र ऑब्जेक्ट को पढ़ने का प्रयास करें।

0
Máté Safranka 3 अप्रैल 2018, 15:23

क्यों न सिर्फ एक पैटर्न इनपुट का उपयोग करें

<form action="#" id="form1" name="form1" method="post">
    <input name="Forename" type="text" required="required" id="Forename2" pattern="[A-Za-z]+" />
</form>
4
Matt 3 अप्रैल 2018, 15:26