Pregunta

Tengo un formulario (signup.php) que aparece en una ventana nyroModal al hacer clic en un botón:

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

Me gustaría utilizar alguna forma de validación AJAX (para comprobar si el nombre de usuario ha sido tomada, por ejemplo) antes de enviar el formulario.

he tenido en cuenta lo siguiente: Cuando el usuario hace clic en el botón 'enviar'. llama a la función JavaScript con onClick que envía los campos necesarios para un script PHP, que devuelve si los campos son válidos. Entonces, si el campo no es válido, se notifica al usuario, pero cuando el campo es válida, se envía el formulario a través de algo así como $('#formid').submit();. Es bastante fácil en teoría.

y

El problema es que, cuando el nyroModel recibe el nuevo formulario desde una URL, y crea un div en el DOM con los contenidos en el mismo, Firefox ignora por completo cualquier etiqueta <script>. El uso de Firebug, puedo ver lo que realmente obtiene las etiquetas <script> con la respuesta, pero los ignora Firefox. Además, no puede crear una función de jQuery en la página que el modelo se llama desde, porque cuando se crea el documento, la forma no existe en DOM todavía.

Alguna idea de cómo solucionar esto?

¿Fue útil?

Solución

Trate de añadir un manejador de presentar a la forma:

onClick='return frmSubmit()'

En este controlador, primero serializar los datos del formulario y presentarlo a la secuencia de comandos de validación. Asegúrese de return false después de emitir la petición, ya que se realiza de forma asíncrona. En la devolución de llamada de respuesta, se implementa la siguiente: si la respuesta indica que la entrada es válida, debe enviar el formulario mediante programación con el .submit()-método. Si, sin embargo, el Reponse indica que algo está mal (que tendrá que suministrar las votaciones en formato JSON), unir un poco de retroalimentación constructiva a la forma para que el usuario lea.

No se olvide de capturar el evento de pulsación de tecla, y prevenir la forma de ser presentado cuando se pulsa ENTER, ya que pasará por alto su función de validación.

Y, uhm, una sugerencia: que podría ser mejor que hacer toda la validación en el lado del cliente, para empezar, que suele ser suficiente. Usted probablemente ha escuchado que la validación del lado del cliente se puede evitar, por lo que todavía hay una necesidad de control del lado del servidor. Sin embargo, siempre me siento que si un usuario decide meterse con el sistema en serio, entonces no es necesario proporcionar una retroalimentación constructiva. Un mensaje que indica fallo simple será suficiente. Por lo tanto, comprobar primero la entrada con sencillo Javascript. Si algo va mal, dar su opinión. Sin embargo, si el servidor recibe una entrada no válida (lo que significa que la validación del lado del cliente ha sido omitida), acaba de notificar al usuario que él no pudo.

Otros consejos

podría utilizar algo como:

onClick='javascript: return myValidationFuncion()

Cuando su función sería comprobar si el valor es válido, es decir, hacer que su llamada de servicio web allí. Si los valores no válidos, devuelva falsa con el fin de detener la ejecución.

K

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top