2012-01-31 27 views
22

Tôi muốn kiểm tra xem người dùng nhập đúng số điện thoại trong, với sự giúp đỡ của jQuery, cho đến nay tôi đã đến giai đoạn này:Kiểm tra Nếu chỉ nhập các giá trị số vào đầu vào. (JQuery)

var phone = $("input#phone").val(); 
if (phone !== "") { 
    //Check if phone is numeric 
    $("label#phone_error").show(); //Show error 
    $("input#phone").focus(); //Focus on field 
    return false; 
} 

Về cơ bản nó sẽ kiểm tra nếu số điện thoại đã được nhập và nếu nó là , Tôi muốn kiểm tra xem nó có phải là giá trị số không và nếu nó không hiển thị thông báo lỗi. Ai đó có thể giúp kiểm tra xem nó có phải là số không?

+5

Hãy xem xét rằng số điện thoại thực sự không phải là số mà là một chuỗi chứa số. Người dùng sẽ viết các con số theo những cách kỳ lạ và nếu bạn có ứng dụng toàn cầu, thậm chí còn hơn nữa. Nhớ mã quốc gia bắt đầu bằng 00 hoặc +, dấu + là hợp lệ dưới dạng số điện thoại, nhưng không phải là số hợp lệ. Xin lỗi nếu tôi tắt chủ đề ở đây nhưng tôi đã dành quá nhiều thời gian điền vào "không phải là số hợp lệ" trên các trang web –

+0

Bạn cũng có thể đi xa để xóa ký tự không phải là số và sau đó tạo đầu vào như bạn muốn sử dụng câu lệnh switch sử dụng jquery '.val()' và '.length()' 'var valLength = $ (this) .val(). length;' trong điều kiện của bạn. 'switch (valLength) {' sau đó thêm các trường hợp ở các giá trị độ dài của bạn để kiểm tra giá trị số hoặc sử dụng câu lệnh regex có điều kiện để xác định nếu giá trị của bạn là số ở giá trị 'case:' trong mảng chiều dài của bạn. –

+0

Tại sao/tại sao regexp không tốt hơn JQuery isNumeric()? –

Trả lời

54

Hãy thử điều này ... nó sẽ đảm bảo rằng chuỗi "điện thoại" chỉ chứa chữ số và ít nhất sẽ chứa một chữ số

if(phone.match(/^\d+$/)) { 
    // your code here 
} 
+0

Đây là một tùy chọn tốt vì jQuery.isNumeric() không xác nhận giá trị dài (Int64). –

+0

Tôi nghĩ rằng điều quan trọng cần đề cập đến là liên quan đến câu hỏi ban đầu của OPs về cách đảm bảo số điện thoại chỉ có giá trị số dại (Int64) giá trị. Đầu vào biểu mẫu số điện thoại sẽ có 30 đầu vào. Đối với đầu vào điện thoại của Hoa Kỳ, một mục nhập có thể rất dài có thể bằng ... (555) 555-5555 ext: (5555). Vì vậy, chúng tôi có tổng cộng 25 vị trí ký tự được sử dụng trong chuỗi mẫu của chúng tôi. Phiên bản cũ với giới hạn 25 vị trí là tất cả những gì chúng tôi cần đảm bảo (int64) không được sử dụng bởi người đang sử dụng biểu mẫu không đúng cách. Chỉ cần nói ... –

3

http://docs.jquery.com/Plugins/Validation/CustomMethods/phoneUS

Kiểm tra xem. Nó sẽ chỉ là những gì bạn đang tìm kiếm. Plugin xác thực điện thoại của Hoa Kỳ cho jQuery.

Nếu bạn muốn tự mình làm, bạn sẽ có một lượng công việc tốt. Kiểm tra chức năng isNaN(). Nó cho bạn biết nếu nó không phải là một số. Bạn cũng sẽ muốn đánh dấu các biểu thức chính quy của mình để xác thực. Nếu bạn đang sử dụng RegEx, bạn có thể đi mà không cần isNaN(), vì bạn sẽ vẫn đang thử nghiệm cho điều đó.

18

Có một chức năng tích hợp sẵn trong jQuery để kiểm tra này (IsNumeric), vì vậy hãy thử như sau:

var phone = $("input#phone").val(); 
    if (phone !== "" && !$.isNumeric(phone)) { 
    //Check if phone is numeric 
    $("label#phone_error").show(); //Show error 
    $("input#phone").focus(); //Focus on field 
    return false; 
} 
+0

Tuyệt vời, không nhận ra điều này đã được thêm vào jQuery. Nếu đó là '$ .isNumeric'? –

+0

bạn nói đúng, chức năng này đã được thêm từ v 1.7 –

+0

Tôi đã thử nó nhưng nó không hoạt động nếu bạn có giá trị dài (Int64), do đó sẽ chỉ làm việc cho các giá trị int bình thường. –

3

tôi sử dụng này:

jQuery.validator.addMethod("phoneUS", function(phone_number, element) { 
phone_number = phone_number.replace(/\s+/g, ""); 
return this.optional(element) || phone_number.length > 9 && 
    phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); 
}, "Please specify a valid phone number"); 
1

cho tương lai vis itors, bạn có thể thêm functon này cho phép người dùng nhập vào chỉ số: bạn sẽ chỉ cần thêm jquery và tên lớp vào đầu vào kiểm tra xem thành http://jsfiddle.net/celia/dvnL9has/2/

$('.phone_number').keypress(function(event){ 
var numero= String.fromCharCode(event.keyCode); 
var myArray = ['0','1','2','3','4','5','6','7','8','9',0,1,2,3,4,5,6,7,8,9]; 
index = myArray.indexOf(numero);// 1 
var longeur= $('.phone_number').val().length; 
if(window.getSelection){ 
text = window.getSelection().toString(); 
} if(index>=0&text.length>0){ 
    }else if(index>=0&longeur<10){ 
    }else {return false;} }); 
2

Tôi sử dụng này để kiểm tra xem tất cả các hộp văn bản có giá trị số:

if(!$.isNumeric($('input:text').val())) { 
     alert("All the text boxes must have numeric values!"); 
     return false; 
    } 

hoặc cho một:

$.isNumeric($("txtBox").val()); 

sẵn với jQuery 1.7.

1
if (!(/^[-+]?\d*\.?\d*$/.test(document.getElementById('txtRemittanceNumber').value))){ 
      alert('Please enter only numbers into amount textbox.') 
      } 
      else 
      { 
      alert('Right Number'); 
      } 

Tôi hy vọng mã này có thể giúp bạn.

trong mã này nếu điều kiện sẽ trả về true nếu có bất kỳ số thập phân hợp pháp nào của bất kỳ số thập phân nào. và cảnh báo sẽ đưa ra thông báo "Right Number" khác khôn ngoan nó sẽ hiển thị một cảnh báo popup với thông báo "Xin vui lòng nhập chỉ số vào số lượng textbox.".

Thanks ... :)

0

Đây không phải là một câu trả lời chính xác cho câu hỏi, nhưng một lựa chọn khác để xác nhận điện thoại, là để đảm bảo số lượng được nhập theo định dạng bạn đang mong đợi. Dưới đây là một chức năng tôi đã làm việc trên đó khi được đặt thành sự kiện onInput, sẽ loại bỏ bất kỳ đầu vào không phải số nào và tự động chèn dấu gạch ngang tại vị trí "đúng", giả sử xxx-xxx-xxxx là đầu ra mong muốn .

<input oninput="formatPhone()">

function formatPhone(e) { 
    var x = e.target.value.replace(/\D/g, '').match(/(\d{0,3})(\d{0,3})(\d{0,4})/); 
    e.target.value = !x[2] ? x[1] : x[1] + '-' + x[2] + (x[3] ? '-' + x[3] : ''); 
} 
1

tôi đã sử dụng hình thức này xác nhận .... kiểm tra văn bản dán và nếu nó có chứa bảng chữ cái, cho thấy một lỗi cho người dùng và sau đó rõ ràng ra hộp sau khi chậm trễ cho người sử dụng để kiểm tra văn bản và thực hiện các thay đổi thích hợp.

$('#txtbox').on('paste', function (e) { 
      var $this = $(this); 
      setTimeout(function (e) { 
       if (($this.val()).match(/[^0-9]/g)) 
       { 
        $("#errormsg").html("Only Numerical Characters allowed").show().delay(2500).fadeOut("slow");      
        setTimeout(function (e) { 
         $this.val(null); 
        },2500); 
       }     
      }, 5); 
     }); 
Các vấn đề liên quan