2010-03-09 17 views
22

मेरे पास एक साधारण समस्या है - मैं यह देखने के लिए एक फ़ील्ड जांचना चाहूंगा कि यह एक पूर्णांक है या नहीं, तो यह रिक्त नहीं है। मैं किसी भी अतिरिक्त प्लगइन का उपयोग नहीं कर रहा हूँ, बस jQuery। मेरा कोड इस प्रकार है:jquery: सत्यापित करें कि टेक्स्ट फ़ील्ड संख्यात्मक

if($('#Field').val() != "") 
{ 
    if($('#Field').val().match('^(0|[1-9][0-9]*)$')) 
    { 
     errors+= "Field must be numeric.<br/>"; 
     success = false; 
    } 
} 

... ऐसा लगता है कि यह काम नहीं कर रहा है। मुझसे कहां गलती हो रही है?

मुझे प्राप्त त्रुटि val() is not an object है।

अपडेट: वास्तविक मुद्दा यह था कि मेरा तत्व नाम सेट था और आईडी नहीं।

+1

आप पहली पंक्ति पर एक बंद उद्धरण याद कर रहे हैं - कि अभी कोई गलती है? –

+0

जब आप संख्यात्मक कहते हैं, तो क्या आपका मतलब किसी भी प्रकार की संख्या (फ्लोट्स और व्हाट्नॉट) या क्या आपका मतलब पूर्णांक है? – karim79

+1

http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric –

उत्तर

22

यह काम करना चाहिए। मैं करूंगा trim the whitespace सब से पहले इनपुट फ़ील्ड से:

if($('#Field').val() != "") { 
    var value = $('#Field').val().replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 
    var intRegex = /^\d+$/; 
    if(!intRegex.test(value)) { 
     errors += "Field must be numeric.<br/>"; 
     success = false; 
    } 
} else { 
    errors += "Field is blank.</br />"; 
    success = false; 
} 
+0

मुझे वैल मिलता है() इसके साथ एक वस्तु नहीं है। –

+0

@ जॉर्ज जॉर्जस्टन - क्योंकि मैंने इसे सीधे अपने बेहतर फैसले के खिलाफ ब्राउज़र में टाइप किया था, और यह पूरी तरह से बोर्क किया गया था। अगर आप करेंगे, तो अभी आज़माएं। – karim79

4

मैं जानता हूँ कि इस के लिए एक प्लगइन जोड़ने की कोई जरूरत नहीं है। लेकिन यह उपयोगी हो सकता है यदि आप संख्याओं के साथ बहुत सी चीजें कर रहे हैं। इसलिए चेकआउट this कम से कम ज्ञान बिंदु के लिए प्लगइन। बाकी karim79 उत्तर सुपर कूल है।

<!DOCTYPE html> 
    <html> 
    <head> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
     <script type="text/javascript" src="jquery.numeric.js"></script> 
    </head> 
    <body> 
     <form> 
      Numbers only: 
      <input class="numeric" type="text" /> 
      Integers only: 
      <input class="integer" type="text" /> 
      No negative values: 
      <input class="positive" type="text" /> 
      No negative values (integer only): 
      <input class="positive-integer" type="text" /> 
      <a href="#" id="remove">Remove numeric</a> 
     </form> 
     <script type="text/javascript"> 
     $(".numeric").numeric(); 
     $(".integer").numeric(false, function() { alert("Integers only"); this.value = ""; this.focus(); }); 
     $(".positive").numeric({ negative: false }, function() { alert("No negative values"); this.value = ""; this.focus(); }); 
     $(".positive-integer").numeric({ decimal: false, negative: false }, function() { alert("Positive integers only"); this.value = ""; this.focus(); }); 
     $("#remove").click(
      function(e) 
      { 
       e.preventDefault(); 
       $(".numeric,.integer,.positive").removeNumeric(); 
      } 
     ); 
     </script> 
    </body> 
    </html> 
26

Regex की जरूरत नहीं है, और न ही है प्लगइन्स

if (isNaN($('#Field').val()/1) == false) { 
    your code here 
} 
+1

+1 अच्छी चीजें !!! – ggzone

3

मुझे विश्वास है कि जब इस लागू किया गया था नहीं कर रहा हूँ, लेकिन वर्तमान में आपके द्वारा उपयोग किए http://api.jquery.com/jQuery.isNumeric/

if($('#Field').val() != "") 
{ 
    if($.isNumeric($('#Field').val()) { 
     errors+= "Field must be numeric.<br/>"; 
     success = false; 
    } 
} 
0

सभी बुनियादी मान्यता का उपयोग कर सकते कक्षा

$('.IsInteger,.IsDecimal').focus(function (e) { 
    if (this.value == "0") { 
     this.value = ""; 
    } 
}); 
$('.IsInteger,.IsDecimal').blur(function (e) { 
    if (this.value == "") { 
     this.value = "0"; 
    } 
}); 

$('.IsInteger').keypress(function (e) { 
    var charCode = (e.which) ? e.which : e.keyCode; 
    if (charCode > 31 
    && (charCode < 48 || charCode > 57)) 
     return false; 
}); 
$('.IsDecimal').keypress(function (e) { 
    var charCode = (e.which) ? e.which : e.keyCode; 
    if (this.value.indexOf(".") > 0) { 
     if (charCode == 46) { 
      return false; 
     } 
    } 
    if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) 
     return false; 
}); 
$('.IsSpecialChar').keypress(function (e) { 
    if (e.keyCode != 8 && e.keyCode != 46 && e.keyCode != 37 && e.keyCode != 38 && e.keyCode != 39 && e.keyCode != 40) 
     return false; 
    else 
     return true; 
}); 
$('.IsMaxLength').keypress(function (e) { 
    var length = $(this).attr("maxlength"); 
    return (this.value.length <= length); 
}); 

$('.IsPhoneNumber').keyup(function (e) { 
    var numbers = this.value.replace(/\D/g, ''), 
    char = { 0: '(', 3: ') ', 6: ' - ' }; 
    this.value = ''; 
    for (var i = 0; i < numbers.length; i++) { 
     this.value += (char[i] || '') + numbers[i]; 
    } 
}); 
$('.IsEmail').blur(function (e) { 
    var flag = false; 
    var email = this.value; 
    if (email.length > 0) { 
     var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
     flag = regex.test(email); 
    } 
    if (!flag) 
     this.value = ""; 
}); 

उदाहरण: -

इनपुट

0

में बस डाल वर्ग के नाम आप इस एक के लिए regex जरूरत नहीं है। isNAN() जावास्क्रिप्ट फ़ंक्शन का उपयोग करें।

isNaN() फ़ंक्शन निर्धारित करता है कि एक मूल्य के एक अवैध संख्या (नहीं एक नंबर) है। यदि यह मान NaN है, और गलत नहीं है तो यह फ़ंक्शन सत्य लौटाता है।

if (isNaN($('#Field').val()) == false) { 

    //it's a number 
} 
संबंधित मुद्दे