Restituisce false in Javascript/Jquery all’interno di un’istruzione if

Ho questa funzione per controllare il mio stato di forma:

function checkFrm() {
    $.each($('select'), function() {
        var $this = $(this);

        if( $this.val() === 'null') {
            //do nothing
        } else {
            if($this.next('input').val().length < 1) {
                return false;
            }
        }
    });
}

Quando l’utente invia questo, viene eseguito il codice, e, idealmente, se i criteri sono soddisfatti, la forma non sottoporre a causa della ‘return false;’ bit.

Tuttavia, per qualche ragione, è totalmente ignorando questo!

Se ho impostato un ritorno variabile all’inizio come ‘var toreturn = true;’ quindi impostare “toreturn = false’, quando il grilletto viene colpito, poi il ritorno di toreturn;’ a destra alla fine si ferma il modulo di presentazione proprio bene… però non è molto, come le segnalazioni e controlli corro in mezzo ci sono tutti attivati contemporaneamente che sarebbe completamente travolgente per l’utente.

Qualche suggerimento per favore?

Grazie 🙂

  • Puoi incollare il codice per favore
InformationsquelleAutor Nick | 2009-08-07

 

2 Replies
  1. 13

    Restituzione di false da ogni non restituirà false dalla funzione.

    È necessario impostare un var di return false dalla funzione anche. Si può ancora rompere ogni utilizzando il return false appena le condizioni non riesce.

    function checkFrm() {
        var retVal=true;
        $.each($('select'), function() {
            var $this = $(this);
    
            if( $this.val() === 'null') {
                    //do nothing
            } else {
                    if($this.next('input').val().length < 1) {
                            //set the var to return from the function
                            retval = false; 
                            //exit out of the each
                            return false;
                    }
            }
        });
        return retVal;
    }
    • Whoops, appena aggiunto questa risposta esatta. Voglio eliminare e +1 per te! Il mio unico commento è stato un piccolo FYI che restituisce falso da $.ogni simula una “pausa” nella iterazione mentre il ritorno del vero simula un “continua”. Ho sempre trovato che è un modo semplice per guardare.
    • jquery chiama la funzione anonima per ogni modulo controlli e che ignora il codice di ritorno di esso. (beh… in realtà “ognuno” si ferma appena vede un falso codice di ritorno… ma non c’è modo di “ogni” potrebbe dirvi che vide un falso codice di ritorno come può restituire solo gli oggetti che aveva per iterare)
    • Molte grazie! l’ingresso è infatti fin dalla prossima… impressionante risposta, in atto ora, grazie!!
    • infatti non yup.
    • Nick non è necessario il filtro all’interno del prossimo. Sarà solo rallentare
    • D’oh! Appena capito cosa ho fatto di sbagliato con questo… ho restituito false, all’interno dell’istruzione if prima di impostare la variabile restituita, oops! Grazie ancora redsquare, rimuovere il filtro ora è troppo!

  2. 1

    Quando si chiama return false; è refurns false per la funzione

    function() {
            var $this = $(this);
    
            if( $this.val() === 'null') {
                    //do nothing
            } else {
                    if($this.next('input').val().length < 1) {
                            return false;
                    }
            }
        }

    Che non è il lavoro per voi.
    È meglio ottenere un array di seleziona come questo:

    var selectsArray=document.getElementsByTagName("select");

    e lavorare con loro in un ciclo.

    for(var i=0; i< selectsArray.length;i++){
          if( selectsArray[i].value === 'null') {
                    //do nothing
            } else {
                    if(selectsArray[i].next('input').val().length < 1) {
                            return false;
                    }
            }
    }
    • Un altro grande risposta, grazie.

Lascia un commento