2011-10-14 15 views
16

Estoy haciendo una validación de formulario del lado del cliente para comprobar si las contraseñas coinciden. Pero la función de validación siempre devuelve undefined.Devolver un valor booleano en una función de 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; 
} 

Tenga en cuenta que el validatePassword se llama a partir de una función miembro del objeto Form.

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

Esta función nunca devolverá 'undefined'. Defina * "se llama desde una función miembro del objeto Formulario." * –

+0

simplemente presione CTRL + MAYÚS + J - compruebe si el error En caso afirmativo, publique aquí, Si no, abra el depurador y ejecútelo. –

+0

@AnilShanbhag No devuelve ningún error. Abrí el depurador y cuando paso por el código, es cuando me di cuenta de que el resultado se está configurando como 'indefinido' – tryurbest

Respuesta

10

Se podría simplificar mucho esto:

  • Compruebe si uno no está vacía
  • Comprobar si son iguales

Esto dará lugar a esto, que siempre devolverá un booleano Su función también siempre debe devolver un valor lógico, pero se puede ver que lo hace un poco mejor si a simplificar su código:

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 Eso sigue devolviendo 'undedined' .. soy haciendo algo extraño – tryurbest

+0

+1 para un trazador de líneas –

+0

@tryurbest: ¿Obtiene algún error, quizás? Esta función * siempre * regresa, y lo que devuelve es un booleano ... Y en su código, entonces 'this.validation_fn' debe ser falso. ¿Cuál es el valor de 'this.validation_fn'? – pimvdb

2

Usted puede envolver su valor de retorno de la función booleana

Boolean([return value]) 

Eso Aseguraremos que todos los valores de Falsey sean falsos y que las declaraciones verdaderas sean verdaderas.

Cuestiones relacionadas