2010-03-09 28 views
22

Tôi có vấn đề đơn giản - Tôi muốn kiểm tra một trường để xem nếu một số nguyên của nó nếu nó không phải là trống. Tôi không sử dụng bất kỳ plugin bổ sung nào, chỉ cần jQuery. Mã của tôi như sau:jquery: xác nhận rằng trường văn bản là số

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

... Dường như nó không hoạt động. Tôi làm sai ở đâu?

Lỗi tôi nhận được là val() is not an object.

CẬP NHẬT: Đã phát hiện ra vấn đề thực sự là tôi đã đặt tên phần tử chứ không phải Id.

+1

Bạn đang thiếu báo giá đóng trên dòng đầu tiên - đó chỉ là lỗi đánh máy? –

+0

khi bạn nói số, bạn có nghĩa là bất kỳ loại số (nổi và whatnot) hoặc bạn có nghĩa là một số nguyên? – karim79

+1

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

Trả lời

22

Điều này sẽ hiệu quả. Tôi sẽ trim the whitespace từ trường nhập trước hết:

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

Tôi nhận val() không phải là một đối tượng với điều này là tốt. –

+0

@George Johnston - bởi vì tôi vừa nhập trực tiếp vào trình duyệt dựa vào phán quyết tốt hơn của tôi, và nó hoàn toàn bị bẻ cong. Hãy thử ngay bây giờ, nếu bạn muốn. – karim79

4

Tôi biết không cần thêm plugin cho điều này. Nhưng điều này có thể hữu ích nếu bạn đang làm rất nhiều điều với các con số. Vì vậy, thanh toán this plugin ít nhất là cho quan điểm kiến ​​thức. Phần còn lại của câu trả lời là cực kỳ tuyệt vời.

<!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 là không cần thiết, cũng không phải là plugin

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

+1 nội dung thú vị !!! – ggzone

3

Tôi không chắc chắn khi điều này được thực hiện, nhưng hiện tại bạn có thể sử dụng http://api.jquery.com/jQuery.isNumeric/

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

Tất cả các xác nhận cơ bản sử dụng theo lớp

$('.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 = ""; 
}); 

Ví dụ: -

tên lớp chỉ cần đặt ở đầu vào

0

Bạn không cần regex cho thế này. Sử dụng hàm isNAN() javascript.

Hàm isNaN() xác định xem giá trị có phải là số bất hợp pháp (Không phải một số) hay không. Hàm này trả về true nếu giá trị là NaN và false nếu không.

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

    //it's a number 
} 
Các vấn đề liên quan