फ़ील्ड के लिए इंटरसेप्ट कुंजी ईवेंट, इनपुट पर अवैध पात्रों का पता लगाएं, उन्हें फ़ील्ड में प्रवेश करने से रोकें और फ़ील्ड के पास एक अस्थायी संदेश जोड़ें (पृष्ठ में डाला गया) जो बताता है कि कौन से पात्र या मानों की अनुमति है। पॉप अप अलर्ट टाइपिंग के बीच में प्रतिक्रिया देने का एक बुरा तरीका है।
फिर, सबमिशन से पहले फिर से सत्यापित करें क्योंकि फ़ील्ड में डेटा प्राप्त करने के अन्य तरीके हैं (ड्रैग/ड्रॉप, कॉपी/पेस्ट, आदि ...) कि आपने सबकुछ पकड़ा नहीं होगा।
कार्य jsFiddle: http://jsfiddle.net/jfriend00/CkDTy/
$(".integer").keypress(function(e) {
if (e.which < 48 || e.which > 57) {
showAdvice(this, "Integer values only");
return(false);
}
});
$(".decimal").keypress(function(e) {
// 46 is a period
if (e.which != 46 && (e.which < 48 || e.which > 57)) {
showAdvice(this, "Decimal numbers only");
return(false);
}
if (e.which == 46 && this.value.indexOf(".") != -1) {
showAdvice(this, "Only one period allowed in decimal numbers");
return(false); // only one decimal allowed
}
});
function showAdvice(obj, msg) {
$("#singleAdvice").stop(true, false).remove();
$('<span id="singleAdvice" class="advice">' + msg + '</span>').insertAfter(obj);
$("#singleAdvice").delay(4000).fadeOut(1500);
}
@brodie: हालांकि यह जावास्क्रिप्ट/HTML उत्तर नहीं है। – animuson
Whoops, yep ने टिप्पणी हटा दी – brodie
स्पष्ट होने के लिए: हालांकि हम एक अच्छे उपयोगकर्ता अनुभव के लिए जावास्क्रिप्ट में इन चीजों की जांच कर सकते हैं, लेकिन यह * जावास्क्रिप्ट को उन मानों को दर्ज करने से अक्षम नहीं करेगा * वैसे भी। यह आपकी रक्षा की अंतिम पंक्ति नहीं होनी चाहिए, और सर्वर-साइड सत्यापन भी होना चाहिए। (मुझे यकीन है कि आप यह जानते हैं, लेकिन भविष्य के पाठक नहीं हो सकते हैं।) – Matchu