2011-10-14 39 views
16

Tôi đang thực hiện xác thực biểu mẫu phía khách hàng để kiểm tra xem mật khẩu có khớp không. Nhưng hàm xác nhận luôn trả về undefined.Trả về giá trị boolean trong hàm JavaScript

function validatePassword(errorMessage) 
{ 
    var password = document.getElementById("password"); 
    var confirm_password = document.getElementById("password_confirm"); 

    if(password.value) 
    { 
     // Check if confirm_password matches 
     if(password.value != confirm_password.value) 
     { 
     return false; 
     } 
    } 
    else 
    { 
     // If password is empty but confirm password is not 
     if(confirm_password.value) 
     { 
     return false; 
     } 
    } 
    return true; 
} 

Xin lưu ý rằng validatePassword được gọi từ chức năng thành viên của đối tượng Biểu mẫu.

function Form(validation_fn) 
{ 
    // Do other stuff 
    this.submit_btn = document.getElementById("submit"); 
    this.validation_fn = validation_fn; 
} 

Form.prototype.submit = funciton() 
{ 
    var result; 
    if(this.validation_fn) 
    { 
     result = this.validation_fn(); 
    } 

    //result is always undefined 
    if(result) 
    { 
     //do other stuff 
    } 
} 
+0

Chức năng này sẽ không bao giờ trả lại 'không xác định'. Vui lòng xác định * "được gọi từ một chức năng thành viên của đối tượng Form." * –

+0

chỉ cần nhấn CTRL + SHIFT + J - kiểm tra nếu có lỗi Nếu có bài đăng ở đây, Nếu không thì hãy mở trình gỡ rối và chạy nó. –

+0

@AnilShanbhag Không trả lại bất kỳ lỗi nào. Tôi đã mở trình gỡ lỗi và khi tôi bước qua mã, là khi tôi nhận ra rằng kết quả đang được đặt là 'không xác định' – tryurbest

Trả lời

10

Bạn có thể đơn giản hóa này rất nhiều:

  • Kiểm tra xem ai là không có sản phẩm nào
  • Kiểm tra xem họ đều bình đẳng

này sẽ cho kết quả này, mà sẽ luôn luôn trở lại một boolean. Chức năng của bạn cũng nên luôn luôn trả về một boolean, nhưng bạn có thể thấy nó tốt hơn một chút nếu bạn đơn giản hóa mã của bạn:

function validatePassword() 
{ 
    var password = document.getElementById("password"); 
    var confirm_password = document.getElementById("password_confirm"); 

    return password.value !== "" && password.value === confirm_password.value; 
     //  not empty  and    equal 
} 
+0

@primvdb Điều đó vẫn trả về 'chưa được lọc' .. Tôi làm điều gì đó bizzare – tryurbest

+0

+1 cho một lớp lót –

+0

@tryurbest: Bạn có gặp phải bất kỳ lỗi nào không? Hàm này luôn luôn * trả về, và nó trả về là một boolean ... Và trong mã của bạn, thì 'this.validation_fn' sẽ là false. Giá trị của 'this.validation_fn' là gì? – pimvdb

2

Bạn có thể quấn giá trị trả về của bạn trong hàm Boolean

Boolean([return value]) 

Đó' ll đảm bảo tất cả các giá trị falsey là giả và báo cáo trung thực là đúng sự thật.

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