मुझे नहीं लगता कि किसी भी तरह के प्लगइन आसानी से उपलब्ध है है की तरह कुछ। समस्या थोड़ा मुश्किल है, क्योंकि आपको उपयोगकर्ता को अपने रेगेक्स को लागू करने से पहले कुछ इनपुट टाइप करने की अनुमति देना है। यही है, आप केवल प्रत्येक char के खिलाफ मिलान नहीं कर सकते क्योंकि इसे टाइप किया गया है, जब तक कि आपका रेगेक्स केवल वर्णों के सेट को परिभाषित न करे।
उदाहरण के लिए, यदि वे भुगतान राशि दर्ज कर रहे हैं, और आप एकल-चरित्र आधार पर संख्याओं और दशमलवों की अनुमति देना चाहते हैं, तो उन्हें 99.99.23.42492
दर्ज करने से रोकता है?
दूसरी तरफ, यदि आप /\d+\.\d{2}/
जैसे पूर्ण रेगेक्स की आपूर्ति करते हैं, तो यह एक ही चरित्र पर बिल्कुल मेल नहीं खाएगा, आपको रेगेक्स को लागू करने से पहले कुछ अक्षर टाइप करने की अनुमति देनी होगी और यदि यह मेल नहीं खाता है तो उनके इनपुट को मिटा दें। वह निराशाजनक हो सकता है।
यदि आप वास्तव में इनपुट को फ़िल्टर करते समय फ़िल्टर करना चाहते हैं, तो आप पहले अक्षर के लिए अंक, फिर अंकों या दशमलव के प्रवेश के बाद दशमलव के लिए दशमलव की अनुमति देना चाहते हैं, और उसके बाद दो और अंक, और फिर कोई और इनपुट नहीं। यह एक सामान्य उद्देश्य फिल्टर नहीं है।
उदाहरण के लिए, यहां कुछ कोड है जो ऐसा करेंगे, लेकिन यह बहुत बदसूरत है।
myInput.keydown(function() {
var text = this.val
if(!/^\d/.test(text)) {
return '';
} else {
done = text.match(/^(\d+\.\d\d)/);
if (done) { return done[0]; }
last_char = text.substr(text.length-1,1);
decimal_count = text.replace(/[^\.]/g,'').length;
if (decimal_count < 1) {
if (!/[\d\.]/.test(last_char)) {
return text.substr(0,text.length-1);
}
} else if (decimal_count == 1 && last_char == '.') {
return text;
} else {
if (!/[\d]/.test(last_char)) {
return text.substr(0,text.length-1);
}
}
return text;
}
});
और निश्चित रूप से, यदि वे "असली" टाइपिंग किए बिना कुछ मूल्यों में पेस्ट करना होता है तो यह काम नहीं करेगा।
शायद कुछ अन्य दृष्टिकोण आपके लिए बेहतर काम करेगा?फ़ील्ड को हाइलाइट करने और उपयोगकर्ता को इंगित करने की तरह यदि वे एक गैर-अंक, गैर-दशमलव दर्ज करते हैं, या यदि वे इनपुट को फ़िल्टर करने के बजाए एक से अधिक दशमलव दर्ज करते हैं, क्योंकि यह गन्दा लगता है।
पेस्ट को संभाल नहीं करता है। – mark