मैं एक वेब पेज बना रहा हूं, जहां मेरे पास एक इनपुट टेक्स्ट फ़ील्ड है जिसमें मैं केवल संख्यात्मक वर्णों (0,1,2,3,4,5 ... 9) 0-9 की अनुमति देना चाहता हूं।
मैं jQuery का उपयोग करके यह कैसे कर सकता हूं?
मैं एक वेब पेज बना रहा हूं, जहां मेरे पास एक इनपुट टेक्स्ट फ़ील्ड है जिसमें मैं केवल संख्यात्मक वर्णों (0,1,2,3,4,5 ... 9) 0-9 की अनुमति देना चाहता हूं।
मैं jQuery का उपयोग करके यह कैसे कर सकता हूं?
जवाबों:
नोट: यह एक अद्यतन उत्तर है। नीचे दी गई टिप्पणियाँ पुराने संस्करण का उल्लेख करती हैं, जिसमें कीकोड के साथ गड़बड़ होती है।
JSFiddle पर इसे स्वयं आज़माएं ।
इसके लिए कोई मूल jQuery कार्यान्वयन नहीं है, लेकिन आप <input>
निम्न inputFilter
प्लगइन के साथ एक पाठ के इनपुट मूल्यों को फ़िल्टर कर सकते हैं (कॉपी + पेस्ट, ड्रैग + ड्रॉप, कीबोर्ड शॉर्टकट, संदर्भ मेनू संचालन, गैर-टाइप करने योग्य कुंजी, कैरेट स्थिति, अलग-अलग का समर्थन करता है) आईई 9 के बाद से कीबोर्ड लेआउट और सभी ब्राउज़र :
// Restricts input for the set of matched elements to the given inputFilter function.
(function($) {
$.fn.inputFilter = function(inputFilter) {
return this.on("input keydown keyup mousedown mouseup select contextmenu drop", function() {
if (inputFilter(this.value)) {
this.oldValue = this.value;
this.oldSelectionStart = this.selectionStart;
this.oldSelectionEnd = this.selectionEnd;
} else if (this.hasOwnProperty("oldValue")) {
this.value = this.oldValue;
this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
} else {
this.value = "";
}
});
};
}(jQuery));
अब आप inputFilter
इनपुट फ़िल्टर स्थापित करने के लिए प्लगइन का उपयोग कर सकते हैं :
$(document).ready(function() {
$("#myTextBox").inputFilter(function(value) {
return /^\d*$/.test(value); // Allow digits only, using a RegExp
});
});
अधिक इनपुट फ़िल्टर उदाहरणों के लिए JSField डेमो देखें । ध्यान दें कि आप अभी भी सर्वर साइड सत्यापन करना होगा!
jQuery वास्तव में इसके लिए आवश्यक नहीं है, आप शुद्ध जावास्क्रिप्ट के साथ भी यही काम कर सकते हैं। इस जवाब को देखें ।
HTML 5 में एक देशी समाधान है <input type="number">
( विनिर्देश देखें ), लेकिन ध्यान दें कि ब्राउज़र समर्थन भिन्न होता है:
step
, min
और max
विशेषताओं का समर्थन नहीं करते हैं ।e
और E
क्षेत्र में प्रवेश करने की अनुमति देता है । यह प्रश्न भी देखें ।W3schools.com पर इसे स्वयं आज़माएँ ।
यहाँ मैं उपयोग समारोह है:
// Numeric only control handler
jQuery.fn.ForceNumericOnly =
function()
{
return this.each(function()
{
$(this).keydown(function(e)
{
var key = e.charCode || e.keyCode || 0;
// allow backspace, tab, delete, enter, arrows, numbers and keypad numbers ONLY
// home, end, period, and numpad decimal
return (
key == 8 ||
key == 9 ||
key == 13 ||
key == 46 ||
key == 110 ||
key == 190 ||
(key >= 35 && key <= 40) ||
(key >= 48 && key <= 57) ||
(key >= 96 && key <= 105));
});
});
};
फिर आप इसे अपने नियंत्रण में संलग्न कर सकते हैं:
$("#yourTextBoxName").ForceNumericOnly();
return this.each(function()
?
each
से return this.each(function()
अधिक ऑब्जेक्ट को अनुमति देने के लिए के रूप में HaggleLad कहा है, और return
भाग फोन करने वाले के लिए jQuery वस्तु वापस लौटने के लिए, इस तरह के रूप चेनिंग अनुमति देने के लिए है$("input[type='text'").ForceNumericOnly().show()
पंक्ति में:
<input name="number" onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')">
विनीत शैली (jQuery के साथ):
$('input[name="number"]').keyup(function(e)
{
if (/\D/g.test(this.value))
{
// Filter non-digits from input value.
this.value = this.value.replace(/\D/g, '');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="number">
onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')"
:।
/[^0-9]|^0+(?!$)/g
शून्य की अग्रणी श्रृंखला को रोकने के लिए संशोधित कर सकते हैं ।
आप विशुद्ध रूप से संख्यात्मक पात्रों के परीक्षण के लिए एक साधारण जावास्क्रिप्ट नियमित अभिव्यक्ति का उपयोग कर सकते हैं:
/^[0-9]+$/.test(input);
यदि इनपुट संख्यात्मक या गलत है, तो यह सही है।
या ईवेंट कीकोड के लिए, नीचे सरल उपयोग:
// Allow: backspace, delete, tab, escape, enter, ctrl+A and .
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
// Allow: Ctrl+A
(e.keyCode == 65 && e.ctrlKey === true) ||
// Allow: home, end, left, right
(e.keyCode >= 35 && e.keyCode <= 39)) {
// let it happen, don't do anything
return;
}
var charValue = String.fromCharCode(e.keyCode)
, valid = /^[0-9]+$/.test(charValue);
if (!valid) {
e.preventDefault();
}
आप इस तरह से इनपुट ईवेंट पर उपयोग कर सकते हैं:
$(document).on("input", ".numeric", function() {
this.value = this.value.replace(/\D/g,'');
});
लेकिन, यह कोड विशेषाधिकार क्या है?
decimal
के बीच 0.0
करने के लिए 24.0
मैं इसे डालने देती करने में असमर्थ हूँ.
this.value = Number(this.value.replace(/\D/g, ''));
लघु और मधुर - भले ही यह 30+ उत्तरों के बाद कभी ध्यान नहीं देगा;)
$('#number_only').bind('keyup paste', function(){
this.value = this.value.replace(/[^0-9]/g, '');
});
जावास्क्रिप्ट फ़ंक्शन का उपयोग करें NNN ,
if (isNaN($('#inputid').val()))
if (isNaN (document.getElementById ('inputid'))। val ())।
if (isNaN(document.getElementById('inputid').value))
अपडेट: और यहाँ एक अच्छा लेख है जिसके बारे में बात कर रहा हूँ लेकिन jQuery का उपयोग कर रहा है: HTML पाठ बॉक्स में संख्यात्मक मूल्यों पर इनपुट को प्रतिबंधित करना
document.getElementById('inputid').val()
यार .. वो अभी भी jquery है। .val()
एक jquery चीज है। उपयोग.value
decimal
के बीच 0.0
करने के लिए 24.0
मैं इसे डालने देती करने में असमर्थ हूँ.
$(document).ready(function() {
$("#txtboxToFilter").keydown(function(event) {
// Allow only backspace and delete
if ( event.keyCode == 46 || event.keyCode == 8 ) {
// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if (event.keyCode < 48 || event.keyCode > 57 ) {
event.preventDefault();
}
}
});
});
स्रोत: http://snipt.net/GerryEng/jquery-making-textfield-only-accept-numeric-values
मैं अपनी आंतरिक सामान्य js फ़ाइल में इसका उपयोग करता हूं। मैं बस किसी भी इनपुट के लिए कक्षा को जोड़ता हूं जिसे इस व्यवहार की आवश्यकता है।
$(".numericOnly").keypress(function (e) {
if (String.fromCharCode(e.keyCode).match(/[^0-9]/g)) return false;
});
मेरे लिए एक सरल है
jQuery('.plan_eff').keyup(function () {
this.value = this.value.replace(/[^1-9\.]/g,'');
});
this.value.replace(/[^0-9\.]/g,'');
ओपी की 0-9 की आवश्यकताओं को शामिल करने के लिए उपयोग करते हैं
इतना जटिल क्यों? HTML5 पैटर्न विशेषता होने के कारण आपको jQuery की भी आवश्यकता नहीं है:
<input type="text" pattern="[0-9]*">
अच्छी बात यह है कि यह मोबाइल उपकरणों पर एक संख्यात्मक कीबोर्ड लाता है, जो कि jQuery का उपयोग करने से बेहतर है।
आप इसे बहुत ही सरल समाधान का उपयोग करके कर सकते हैं
$("input.numbers").keypress(function(event) {
return /\d/.test(String.fromCharCode(event.keyCode));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" class="numbers" name="field_name" />
मैंने समाधान के लिए इस लिंक का उल्लेख किया है । यह पूरी तरह से काम करता है !!!
decimal
के बीच 0.0
करने के लिए 24.0
मैं इसे डालने देती करने में असमर्थ हूँ.
आप HTML5 नंबर इनपुट आज़मा सकते हैं :
<input type="number" value="0" min="0">
गैर-अनुरूप ब्राउज़रों के लिए मॉडर्निज़्र और वेबफॉर्म 2 कमियां हैं।
एचटीएमएल 5 में पैटर्न विशेषता एक नियमित अभिव्यक्ति निर्दिष्ट करती है कि तत्व के मूल्य के खिलाफ जांच की जाती है।
<input type="text" pattern="[0-9]{1,3}" value="" />
नोट: पैटर्न विशेषता निम्नलिखित इनपुट प्रकारों के साथ काम करती है: पाठ, खोज, यूआरएल, टेल, ईमेल और पासवर्ड।
[0-9] को किसी भी नियमित अभिव्यक्ति की स्थिति से बदला जा सकता है।
{1,3} यह 1 का न्यूनतम प्रतिनिधित्व करता है और अधिकतम 3 अंकों में प्रवेश किया जा सकता है।
decimal
के बीच 0.0
करने के लिए 24.0
मैं इसे डालने देती करने में असमर्थ हूँ.
JQuery.validate का उपयोग करके कुछ काफी सरल
$(document).ready(function() {
$("#formID").validate({
rules: {
field_name: {
numericOnly:true
}
}
});
});
$.validator.addMethod('numericOnly', function (value) {
return /^[0-9]+$/.test(value);
}, 'Please only enter numeric values (0-9)');
समारोह को दबाएंनॉनमैरिक इनपुट (घटना) {
if( !(event.keyCode == 8 // backspace
|| event.keyCode == 46 // delete
|| (event.keyCode >= 35 && event.keyCode <= 40) // arrow keys/home/end
|| (event.keyCode >= 48 && event.keyCode <= 57) // numbers on keyboard
|| (event.keyCode >= 96 && event.keyCode <= 105)) // number on keypad
) {
event.preventDefault(); // Prevent character input
}
}
decimal
के बीच 0.0
करने के लिए 24.0
मैं इसे डालने देती करने में असमर्थ हूँ.
मैं एक बहुत अच्छा और सरल समाधान आया जो उपयोगकर्ता को पाठ का चयन करने या अन्य समाधानों की तरह चिपकाने से रोक नहीं सकता है। jQuery शैली :)
$("input.inputPhone").keyup(function() {
var jThis=$(this);
var notNumber=new RegExp("[^0-9]","g");
var val=jThis.val();
//Math before replacing to prevent losing keyboard selection
if(val.match(notNumber))
{ jThis.val(val.replace(notNumber,"")); }
}).keyup(); //Trigger on page load to sanitize values set by server
आप इस जावास्क्रिप्ट फ़ंक्शन का उपयोग कर सकते हैं:
function maskInput(e) {
//check if we have "e" or "window.event" and use them as "event"
//Firefox doesn't have window.event
var event = e || window.event
var key_code = event.keyCode;
var oElement = e ? e.target : window.event.srcElement;
if (!event.shiftKey && !event.ctrlKey && !event.altKey) {
if ((key_code > 47 && key_code < 58) ||
(key_code > 95 && key_code < 106)) {
if (key_code > 95)
key_code -= (95-47);
oElement.value = oElement.value;
} else if(key_code == 8) {
oElement.value = oElement.value;
} else if(key_code != 9) {
event.returnValue = false;
}
}
}
और आप इसे अपने टेक्स्टबॉक्स पर इस तरह से बाँध सकते हैं:
$(document).ready(function() {
$('#myTextbox').keydown(maskInput);
});
मैं उत्पादन में उपरोक्त का उपयोग करता हूं, और यह पूरी तरह से काम करता है, और यह क्रॉस-ब्राउज़र है। इसके अलावा, यह jQuery पर निर्भर नहीं करता है, इसलिए आप इसे अपने टेक्स्टबॉक्स में इनलाइन जावास्क्रिप्ट के साथ बांध सकते हैं:
<input type="text" name="aNumberField" onkeydown="javascript:maskInput()"/>
मुझे लगता है कि यह सभी की मदद करेगा
$('input.valid-number').bind('keypress', function(e) {
return ( e.which!=8 && e.which!=0 && (e.which<48 || e.which>57)) ? false : true ;
})
if(event.which!=8 && event.which!=0 && (event.which<48 || event.which>57) && (event.which<96 || event.which>105)) return;
मैंने ऊपर @ user261922 के पोस्ट के आधार पर मेरा लिखा, थोड़ा संशोधित किया गया ताकि आप सभी का चयन कर सकें, टैब और एक ही पेज पर कई "संख्या केवल" फ़ील्ड को संभाल सकते हैं।
var prevKey = -1, prevControl = '';
$(document).ready(function () {
$(".OnlyNumbers").keydown(function (event) {
if (!(event.keyCode == 8 // backspace
|| event.keyCode == 9 // tab
|| event.keyCode == 17 // ctrl
|| event.keyCode == 46 // delete
|| (event.keyCode >= 35 && event.keyCode <= 40) // arrow keys/home/end
|| (event.keyCode >= 48 && event.keyCode <= 57) // numbers on keyboard
|| (event.keyCode >= 96 && event.keyCode <= 105) // number on keypad
|| (event.keyCode == 65 && prevKey == 17 && prevControl == event.currentTarget.id)) // ctrl + a, on same control
) {
event.preventDefault(); // Prevent character input
}
else {
prevKey = event.keyCode;
prevControl = event.currentTarget.id;
}
});
});
यहाँ एक त्वरित समाधान है जो मैंने कुछ समय पहले बनाया था। आप मेरे लेख में इसके बारे में अधिक पढ़ सकते हैं:
http://ajax911.com/numbers-numeric-field-jquery/
$("#textfield").bind("keyup paste", function(){
setTimeout(jQuery.proxy(function() {
this.val(this.val().replace(/[^0-9]/g, ''));
}, $(this)), 0);
});
आप टैब को अनुमति देना चाहेंगे:
$("#txtboxToFilter").keydown(function(event) {
// Allow only backspace and delete
if ( event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 ) {
// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
event.preventDefault();
}
}
});
यहाँ एक उत्तर दिया गया है कि jQuery UI विजेट फैक्टरी का उपयोग करता है। आप वर्णों को आसानी से अनुमति दे सकते हैं।
$('input').numberOnly({
valid: "0123456789+-.$,"
});
यह संख्या, संख्या संकेत और डॉलर की मात्रा की अनुमति देगा।
$.widget('themex.numberOnly', {
options: {
valid : "0123456789",
allow : [46,8,9,27,13,35,39],
ctrl : [65],
alt : [],
extra : []
},
_create: function() {
var self = this;
self.element.keypress(function(event){
if(self._codeInArray(event,self.options.allow) || self._codeInArray(event,self.options.extra))
{
return;
}
if(event.ctrlKey && self._codeInArray(event,self.options.ctrl))
{
return;
}
if(event.altKey && self._codeInArray(event,self.options.alt))
{
return;
}
if(!event.shiftKey && !event.altKey && !event.ctrlKey)
{
if(self.options.valid.indexOf(String.fromCharCode(event.keyCode)) != -1)
{
return;
}
}
event.preventDefault();
});
},
_codeInArray : function(event,codes) {
for(code in codes)
{
if(event.keyCode == codes[code])
{
return true;
}
}
return false;
}
});
यह अटूट लगता है।
// Prevent NULL input and replace text.
$(document).on('change', 'input[type="number"]', function (event) {
this.value = this.value.replace(/[^0-9\.]+/g, '');
if (this.value < 1) this.value = 0;
});
// Block non-numeric chars.
$(document).on('keypress', 'input[type="number"]', function (event) {
return (((event.which > 47) && (event.which < 58)) || (event.which == 13));
});
यह सुनिश्चित करने की आवश्यकता है कि आपके पास संख्यात्मक कीपैड और टैब कुंजी भी काम कर रही है
// Allow only backspace and delete
if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9) {
// let it happen, don't do anything
}
else {
// Ensure that it is a number and stop the keypress
if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)) {
}
else {
event.preventDefault();
}
}
मैं थोड़ी मदद करना चाहता था, और मैंने अपना संस्करण, onlyNumbers
फ़ंक्शन बनाया ...
function onlyNumbers(e){
var keynum;
var keychar;
if(window.event){ //IE
keynum = e.keyCode;
}
if(e.which){ //Netscape/Firefox/Opera
keynum = e.which;
}
if((keynum == 8 || keynum == 9 || keynum == 46 || (keynum >= 35 && keynum <= 40) ||
(event.keyCode >= 96 && event.keyCode <= 105)))return true;
if(keynum == 110 || keynum == 190){
var checkdot=document.getElementById('price').value;
var i=0;
for(i=0;i<checkdot.length;i++){
if(checkdot[i]=='.')return false;
}
if(checkdot.length==0)document.getElementById('price').value='0';
return true;
}
keychar = String.fromCharCode(keynum);
return !isNaN(keychar);
}
बस इनपुट टैग में जोड़ें "... इनपुट ... आईडी =" मूल्य "onkeydown =" केवल रिटर्न (घटना) "..." और आप कर रहे हैं;)
मैं भी जवाब देना चाहूंगा :)
$('.justNum').keydown(function(event){
var kc, num, rt = false;
kc = event.keyCode;
if(kc == 8 || ((kc > 47 && kc < 58) || (kc > 95 && kc < 106))) rt = true;
return rt;
})
.bind('blur', function(){
num = parseInt($(this).val());
num = isNaN(num) ? '' : num;
if(num && num < 0) num = num*-1;
$(this).val(num);
});
बस यही ... सिर्फ नंबर। :) लगभग यह सिर्फ 'कलंक' के साथ काम कर सकता है, लेकिन ...
यह दर्ज करने का सरल तरीका है कि मान दर्ज है:
var checknumber = $('#textbox_id').val();
if(jQuery.isNumeric(checknumber) == false){
alert('Please enter numeric value');
$('#special_price').focus();
return;
}
बस इस विधि को Jquery में लागू करने की आवश्यकता है और आप केवल अपना नंबर स्वीकार करने के लिए अपने टेक्स्टबॉक्स को मान्य कर सकते हैं।
function IsNumberKeyWithoutDecimal(element) {
var value = $(element).val();
var regExp = "^\\d+$";
return value.match(regExp);
}
इस समाधान को यहां देखें
आप HTML5 नंबर इनपुट आज़मा सकते हैं:
<input type="number" placeholder="enter the number" min="0" max="9">
यह इनपुट टैग तत्व अब केवल 0 से 9 के बीच का मूल्य लेगा क्योंकि न्यूनतम विशेषता 0 पर सेट है और अधिकतम विशेषता 9 पर सेट है।
यात्रा के बारे में अधिक जानकारी के लिए http://www.w3schools.com/html/html_form_input_types.asp