2010-08-26 23 views
5

Tengo problemas para enviar un formulario cuando el atributo de nombre del botón Enviar es precisamente "enviar".El botón de envío de formulario no se enviará cuando el nombre del botón sea "enviar"

Aquí está el código:

<input onclick="checkForm(document.form_29) && document.form_29.submit();" value="Submit" name="submit" type="button">

Tenga en cuenta que no estamos utilizando un tipo de entrada estándar de "enviar", sino más bien un tipo de entrada de "botón" con JavaScript se utiliza para enviar el formulario después de que un script de validación (checkForm) haya resultado verdadero.

Lo curioso es que esto no funcionará si y solo si el atributo de nombre es "enviar". El problema es entre mayúsculas y minúsculas, por lo que el siguiente (y cualquier otra denominación, incluyendo sin atributo name) funcionará:

<input onclick="checkForm(document.form_29) && document.form_29.submit();" value="Submit" name="Submit" type="button">

he estado mirando por encima de las especificaciones de W3C para alguna mención de un nombre reservado, pero No pude encontrar nada. Sospecho que estoy pasando por alto algo realmente obvio aquí, así que espero que algunos de ustedes puedan ver algo que yo no puedo ver.

Gracias por cualquier ayuda.

+0

mejor ir con 'type =" submit "' –

+0

Sí, me gustaría, pero no puedo, no entraré en los motivos, es una historia larga, y no es una decisión Yo puedo hacer. –

Respuesta

14

usted está teniendo problemas debido a que el name siendo submit está anulando la referencia form.submit() función para la que <form>, en lugar form_29.submit se refiere a ese botón, en lugar de la función DOM submit().

+0

D'oh! ¡Gracias! Bastante seguro de que esa es la respuesta ... –

+7

Sí, esto es todo culpa de Netscape al decidir originalmente que los campos de formulario deberían reflejarse como propiedades con nombre en el objeto 'form', en lugar de solo la colección' form.elements' donde esperarlos. Esto, así como la reflexión de los elementos nombrados en 'document' (y, en el peor caso de IE,' window') ha causado un sinfín de problemas. Nunca podemos estar libres de este mal diseño sucio ahora. Maldita sea su grasa, '' caras caras. – bobince

Cuestiones relacionadas