Domanda

Ho una forma (signup.php) che si apre in una finestra nyroModal quando si fa clic su un pulsante:

<input value="Edit" class="nyroModal" type="button" href="signup.php">

Vorrei utilizzare una qualche forma di validazione AJAX (per controllare se il nome utente è stata presa, per esempio) prima di inviare il modulo.

ho avuto presente quanto segue: Quando l'utente fa clic sul pulsante 'Invia'. chiama javascript funzione con onClick che trasmette i campi richiesti per uno script PHP, che restituisce se i campi sono validi. Quindi, se il campo non è valido, si avvisa l'utente, ma quando il campo è valido, invia il modulo via qualcosa come $('#formid').submit();. Abbastanza facile in teoria.

MA

Il problema è che, quando la nyroModel ottiene il nuovo modulo da un URL, e crea un div nel DOM con il contenuto in esso, Firefox ignora completamente qualsiasi tag <script>. Usando Firebug, vedo che diventa in realtà i tag <script> con la risposta, ma Firefox li ignora. Inoltre, non riesco a creare una funzione jQuery nella pagina che il modello viene chiamato da, perché quando viene creato il documento, il modulo non esiste nel DOM ancora.

Tutte le idee come risolvere questo?

È stato utile?

Soluzione

Prova ad aggiungere un gestore di presentare al form:

onClick='return frmSubmit()'

In questo gestore, per la prima volta serializzare i dati del form, e presentare questo al script di convalida. Assicurati di return false dopo l'invio della richiesta, come si è fatto in modo asincrono. Nella richiamata risposta, si implementa la seguente: se la risposta indica che l'ingresso è valido, si programatically invia il modulo con il .submit()-metodo. Se, tuttavia, il reponse indica che qualcosa non va (dovrete fornire il feedback in JSON-formato), fissare un feedback costruttivo per il form per l'utente di lettura.

Non dimenticate di catturare l'evento Pressione, ed evitare che il modulo venga presentata quando viene premuto Invio, in quanto consentirà di bypassare la funzione di validazione.

E, uhm, un suggerimento: sarebbe meglio fare tutto la convalida sul lato client per cominciare, che di solito è sufficiente. Probabilmente avete sentito che la validazione lato client può essere aggirata, quindi c'è ancora una necessità di un controllo lato server. Tuttavia, ho sempre la sensazione che se un utente decide di pasticciare con il sistema sul serio, allora non è necessario fornire un feedback costruttivo. Un semplice messaggio che indica il fallimento sarà sufficiente. Quindi, per prima cosa controllare l'input con la pianura Javascript. Se qualcosa non va, fornire un feedback. Se, tuttavia, il server riceve input non valido (il che significa che la validazione lato client è stato bypassato), basta avvisare l'utente che non è riuscito.

Altri suggerimenti

si potrebbe usare qualcosa come:

onClick='javascript: return myValidationFuncion()

Dove la funzione sarebbe verificare se il valore è valido, vale a dire rendere la vostra chiamata al servizio Web lì. Se i valori non validi, semplicemente restituire false al fine di fermare l'esecuzione.

K

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