Domanda

Ho una forma, e si desidera disattivare / attivare il suo pulsante di invio a seconda che i campi di testo di input del modulo sono vuote o hanno avuto il testo è entrato in loro.

Credo che questo significa avere un gestore eventi per keydown o keypress eventi dei campi di testo di input: quando è sparato, questo gestore di eventi deve verificare se i campi di testo di input contengono testo, e attivare o disattivare il pulsante di invio di conseguenza

L'evento change sembra che dovrebbe essere più utile di eventi keydown o keypress, tranne che non è sparato fino a quando il controllo in questione perde la messa a fuoco, e che cosa buona è che: dal momento che l'utente vuole digitare solo qualcosa e quindi fare clic sul pulsante di invio, voglio un gestore di eventi che è licenziato dal testo che viene inserito e non solo quando il controllo perde lo stato attivo.

Le mie domande sono:

  • Sono keydown e / o keypress eventi generati prima o dopo il testo corrispondente è stato inserito nel campo di inserimento testo?
  • Sono keydown e / o eventi keypress annullabili (si può cancellare la loro per evitare che il testo corrispondente da essere entrato)?

Modifica Cordiali saluti, il convalida jQuery plug-in modulo di re-test di validità sul tasto su.

È stato utile?

Soluzione

In risposta alle vostre domande ...

  1. Il KeyDown o alla pressione di tasti eventi possono essere intercettati prima di testo immesse utilizzando JavaScript
  2. È possibile restituire false dopo il legame di un funzione alla pressione di un tasto o keydown evento. Questo consentirà di evitare il testo dall'essere ingresso.

Esempio utilizzando jQuery:

$("#inputfield").live("keydown", function(){
    return false;
});

Se si desidera verificare alcuni input per il valore sulla forma presentare è possibile farlo utilizzando jQuery submit () .

$("#theform").submit(function() {
    var formval = $("#theinput").val();
    if(formval == "") { //or some better test
        alert("input value"); //or some other alert...
        return false;
    } else {
        return true;
    }
});

Tornando falsa invalida il click per inviare il modulo.

Modifica Se come dici nei vostri commenti si desidera disabilitare l'invio del modulo fino a quando i requisiti sono soddisfatti per il campo di input (s)

$("#inputfield").live("keyup", function(){
    if($("#inputfield").val() == "") {
        $('#button').attr("disabled", true); 
    } else {
        $('#button').attr("disabled", false); 
    }
});

Si desidera utilizzare il gestore di eventi " keyup " per consentire il testo da inviare primo. vedi il mio esempio: su jsbin

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top