2012-04-17 44 views
5

ngắn câu chuyện dài, tôi đã cố gắng xác thực một trường điện thoại. ive đã thêm số isNaNparseInt để kiểm tra " " trong trường nhưng điều đó cho biếtparseInt luôn trả về NaN?

Điều này dưới đây không bao giờ xác thực đúng ... tôi đang thiếu gì?

if(isNaN(parseInt(phone))){ 
     error.text("Sorry but this phone field requires numbers only"); 
     return false; 
    } else { 
    return true; 

    } 

nó luôn thất bại ... nó không bao giờ đọc đúng ngay cả khi tôi nhập số vào trường và gửi. tôi luôn gặp lỗi mssg.

EDIT: Tôi đang thử nghiệm các giá trị đầu vào từ một hình thức, phone là tên của lĩnh vực này.

+0

Làm việc cho tôi, ví dụ: với điện thoại = "5". Giá trị đầu vào thử nghiệm của bạn là gì? – Bergi

+0

vâng xin lỗi, im kiểm tra vals đầu vào từ một hình thức – somdow

+0

Bạn nên bao gồm html của bạn ở đây trong câu hỏi quá. Điều đó có thể giúp chúng tôi gỡ lỗi. – webnesto

Trả lời

7

parseInt là một chút lẻ vào những thời điểm:

> parseInt("123-456-789") 
123 

May mắn thay có lẽ bạn có thể giải quyết trường hợp của bạn với:

> Number("123-456-789") 
NaN 
10

cách khác nhau để coerse chuỗi JS đến các số, và hậu quả của chúng:

Results of converting various strings using the above techniques http://phrogz.net/JS/string_to_number.png

Cá nhân tôi sử dụng *1 vì nó là ngắn để gõ, nhưng vẫn nổi bật (không giống như unary +) và cung cấp cho tôi những gì người dùng đã nhập hoặc không hoàn toàn. Tôi chỉ sử dụng parseInt() khi tôi biết rằng sẽ có nội dung không phải là số ở cuối để bỏ qua hoặc khi tôi cần phân tích chuỗi không phải là cơ sở-10.

Sửa: Dựa trên nhận xét của bạn, nếu sử dụng phone.val() cố định nó sau đó

  1. Bạn đang sử dụng jQuery (mà bạn không bao giờ đề cập, và nên có), và
  2. Bạn thực sự có/có Đối tượng jQuery, gói một hoặc nhiều phần tử DOM (có thể chỉ là một phần tử).

Bất cứ khi nào bạn làm var foo = $('…'); thì tham chiếu biến đối tượng jQuery của một hoặc nhiều thành phần. Bạn có thể lấy phần tử DOM thực tế đầu tiên từ thông qua var fooEl = foo[0]; hoặc var fooEl = foo.get(0);… nhưng ngay cả khi đó bạn vẫn còn có phần tử DOM và không phải là thuộc tính cụ thể.

Để nhập biểu mẫu, bạn cần lấy số .value từ phần tử DOM, đó là phương thức của phương thức jQuery .val().

Các vấn đề liên quan