2010-06-17 3 views
5

हम एक वर्ण को टेक्स्ट बॉक्स में टाइप करने के लिए कैसे प्रतिबंधित कर सकते हैं।टेक्स्ट बॉक्स में टाइप करने के लिए किसी वर्ण को प्रतिबंधित करें

+0

आप और अधिक स्पष्ट हो सकता है। आपका मतलब है कि आप उपयोगकर्ताओं को किसी टेक्स्ट बॉक्स में कुछ विशेष वर्ण दर्ज करने से प्रतिबंधित करना चाहते हैं? – ckv

उत्तर

6

आप तो पाठ बॉक्स है, तो आप onkeypress घटना

<input type='text' onkeypress='keypresshandler(event)' /> 

को संभालने के लिए आप निम्न समारोह का उपयोग कर सकते उपयोगकर्ताओं

function keypresshandler(event) 
    { 
     var charCode = event.keyCode; 
     //Non-numeric character range 
     if (charCode > 31 && (charCode < 48 || charCode > 57)) 
     return false; 
    } 
+0

हम इसे इस तरह करते हैं :) – Znarkus

+0

मैंने इस दृष्टिकोण की कोशिश की, और पाया कि आपको काम करने के लिए onkeypress = 'return keypresshandler (event)' का उपयोग करने की आवश्यकता है। – Bill

14

प्रतिबंधित करने के लिए आप जावास्क्रिप्ट के माध्यम से यह कर सकते हैं (ताकि है यदि जावास्क्रिप्ट बंद है, तो आप इसे प्रतिबंधित नहीं कर पाएंगे)

<input type="text" onkeyup="this.value = this.value.replace(/[^a-z]/, '')" /> 

यह विल मैं इसे केवल एक-जेड वर्णों तक सीमित करता हूं। चेकआउट regular expressions को देखने के लिए आप

+7

याद रखें कि यह कोड केवल क्लाइंट पक्ष पर निष्पादित करता है। ** स्क्रिप्ट को किसी भी ** इनपुट को संभालने और अमान्य वर्णों को अस्वीकार करने के लिए तैयार होना चाहिए। –

+1

इसे रेगेक्स पर वैश्विक ध्वज की आवश्यकता है। इसका कारण यह है कि कोई भी एक कुंजी नीचे रख सकता है और इसे रिलीज से पहले कई महत्वपूर्ण घटनाओं (और कई संख्याएं जोड़ना) कर सकता है, जिस बिंदु पर केवल 1 कुंजी अप ईवेंट जाता है ... जिसका अर्थ है कि संभवतः कई गैर-वांछित पात्रों में से एक वैश्विक ध्वज के बिना हटा दिया गया है, यह केवल 1 प्रति कॉल को प्रतिस्थापित करता है। –

1
function isNumberKey1(evt) 
{ 
     var charCode = (evt.which) ? evt.which : event.keyCode; 
     if (char!=8(charCode < 65 || charCode > 106)) 
     return false; 

     return true; 
} 
+0

कृपया अपने कोड में कुछ विवरण जोड़ें। अन्य समाधान समाधान के बाद आपका समाधान बेहतर क्यों है? – Artemix

2

हालांकि अभी भी संभव क्या कर सकते हैं, एचटीएमएल 5 के साथ इस आवश्यकता के लिए एक जावास्क्रिप्ट आधारित समाधान का उपयोग करने के लिए कोई वास्तविक जरूरत नहीं है।

<input type="text" name="text" pattern="[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,3}$"> अनुमत वर्णों को RegExp पैटर्न के अनुसार प्रतिबंधित करेगा (इस मामले में: वैध दिखने वाले ईमेल पते)।

title विशेषता को चेतावनी/अधिसूचना के रूप में उपयोग किया जाएगा जब उपयोगकर्ता आवश्यकतानुसार डेटा जमा करने का प्रयास नहीं करता है।

<form action="/add_country.php"> 
    Country code: <input type="text" name="country_code" pattern="[A-Za-z]{3}" title="Three letter country code"> 
    <input type="submit"> 
</form> 

अधिक जानकारी के लिए documentation on HTML input element देखें। सभी ब्राउज़र इसे समान रूप से अच्छी तरह से समर्थन नहीं करते हैं (सफारी की तरह) हालांकि।

0

बेन रोवे का जवाब वास्तव में इसका दृष्टिकोण है। हालांकि, इसे हटाए जाने से पहले टेक्स्टबॉक्स में वर्ण दिखाई देगा। आपको लगता है कि रोका जा सकता है oninput बजाय onkeyup का उपयोग करके:

<input type="text" oninput="this.value = this.value.replace(/[^a-z]/, '')" /> 
संबंधित मुद्दे