2012-08-21 3 views
5

मेरे पास कई फ़ील्ड वाले HTML हैं। क्षेत्र में से एक केवल संख्यात्मक इनपुट की अनुमति देता है। लेकिन अब मैं चाहता हूं कि जब उपयोगकर्ता उस क्षेत्र में पेस्ट करता है तो सभी पात्रों को छोड़कर, जहां छीन या हटा दिया जाता है।पेस्ट ईवेंट पर इनपुट फ़ील्ड में सभी गैर-संख्यात्मक वर्ण हटाएं जावास्क्रिप्ट

उपयोगकर्ता उदाहरण पेस्ट के लिए:

$ 1 234 567 -> 1234567 इनपुट क्षेत्र में

1.234.567 -> 1234567

1.234.567 -> 1234567

और इतने पर

+0

है "-" (ऋण चिह्न के रूप में इस्तेमाल) सांख्यिक? सामान्य रूप से, उपयोगकर्ता इनपुट से चुपचाप हटाने के लिए एक अच्छा विचार नहीं है। अगर मेरा मतलब 100 आइटम ऑर्डर करना था, लेकिन किसी भी तरह से 1oo टाइप करने में कामयाब रहा, तो मैं अपने ऑर्डर को चुपचाप 1 आइटम में बदलने के बजाय चेतावनी देना चाहता हूं और सुधार के लिए प्रेरित होना चाहता हूं। –

+0

टिप्पणी के लिए धन्यवाद, मैं इसे भविष्य के लिए ध्यान में रखूंगा। इस समय मुझे केवल इस पैटर्न को हल करना है। – halofourteen

उत्तर

11

रेगेक्स का उपयोग करें।

<input id="inputBox" name="inputBox" /> 
<script type="text/javascript"> 
var inputBox = document.getElementById('inputBox'); 
inputBox.onchange = function(){ 
    inputBox.value = inputBox.value.replace(/[^0-9]/g, ''); 
} 
</script>​ 

या आप उस क्षेत्र को लगातार जांचने के लिए टाइमर का उपयोग कर सकते हैं।

<input id="inputBox" name="inputBox" /> 
<input id="inputBox2" name="inputBox2" /> 
<script type="text/javascript"> 
var timer = new Array(); 
function checkFields(el){ 
    var inputBox = document.getElementById(el); 
    inputBox.value = inputBox.value.replace(/[^0-9]/g, ''); 
    clearTimeout(timer[el]); 
    timer[el] = setTimeout((function(){ checkFields(el); }), 50); 
}; 
function timerFields(el){ 
    timer[el] = setTimeout((function(){ checkFields(el); }), 50); 
}; 
timerFields('inputBox'); 
timerFields('inputBox2'); 
</script>​ 
0
var f = function (s) { 
    var r = ''; 

    for (var i in s) { 
    if ('0' <= s[i] && s[i] <= '9') { 
     r += s[i]; 
    } 
    } 

    return r; 
} 

alert(f('123.234-234?345')); // 23234234345 

लेकिन एक जवाब :) से regexp का उपयोग

2

कोशिश इस

var regexp=/\D/g; 
alert(("$1 234 567").replace(regexp,"")); 
संबंधित मुद्दे