2011-10-14 18 views
16

Sto eseguendo una convalida del modulo lato client per verificare se le password corrispondono. Ma la funzione di convalida restituisce sempre undefined.Restituzione di un valore booleano in una funzione 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; 
} 

Si prega di notare che il validatePassword è chiamato da una funzione membro dell'oggetto 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

Questa funzione non restituirà mai 'indefinito'. Si prega di definire * "è chiamato da una funzione membro dell'oggetto Form". * –

+0

basta premere CTRL + MAIUSC + J - verificare se l'errore Se sì, postare qui, se non è necessario aprire il debugger ed eseguirlo. –

+0

@AnilShanbhag Non restituisce alcun errore. Ho aperto il debugger e quando passo il codice, è quando ho capito che il risultato è stato impostato come 'undefined' – tryurbest

risposta

10

Si potrebbe semplificare questo molto:

  • Verificare se non è vuoto
  • Controllare se sono uguali

Questo si tradurrà in questo, che sarà sempre il ritorno un booleano. La funzione anche dovrebbe sempre restituire un valore booleano, ma si può vedere che fa un po 'meglio se si semplificare il codice:

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 che restituisce ancora 'undedined' .. I am fare qualcosa di bizzarro – tryurbest

+0

+1 per la nave di linea –

+0

@tryurbest: hai qualche errore? Questa funzione * sempre * restituisce e ciò che restituisce è un valore booleano ... E nel tuo codice, quindi 'this.validation_fn' dovrebbe essere falso. Qual è il valore di 'this.validation_fn'? – pimvdb

2

Si potrebbe avvolgere il vostro valore di ritorno della funzione booleana

Boolean([return value]) 

That' assicurerò che tutti i valori di falso siano falsi e le affermazioni di verità sono vere.

Problemi correlati