javascript - validacion - ¿Cómo obtener el formulario principal de una entrada?
validar formulario javascript html5 (10)
¿Esto funcionaría? (Dejar la acción en blanco también devuelve el formulario a sí mismo, ¿no?)
<form action="">
<select name="memberid" onchange="this.form.submit();">
<option value="1">member 1</option>
<option value="2">member 2</option>
</select>
"este" sería el elemento seleccionado, .form sería su forma principal. ¿Derecha?
Necesito obtener una referencia al padre FORMULARIO de una ENTRADA cuando solo tengo una referencia a esa ENTRADA. ¿Es esto posible con JavaScript? Use jQuery si lo desea.
function doSomething(element) {
//element is input object
//how to get reference to form?
}
Esto no funciona:
var form = $(element).parents(''form:first'');
alert($(form).attr("name"));
Cada entrada tiene una propiedad de form
que apunta a la forma a la que pertenece la entrada, por lo que simplemente:
function doSomething(element) {
var form = element.form;
}
Los elementos DOM nativos que son entradas también tienen un atributo de form
que apunta al formulario al que pertenecen:
var form = element.form;
alert($(form).attr(''name''));
Según w3schools , la propiedad .form
de los campos de entrada es compatible con IE 4.0+, Firefox 1.0+, Opera 9.0+, que es incluso más navegadores que jQuery garantiza, por lo que debe seguir con esto.
Si este fuera un tipo diferente de elemento (no una <input>
), podría encontrar el padre closest
con el closest
:
var $form = $(element).closest(''form'');
alert($form.attr(''name''));
Además, consulte este enlace de MDN en la propiedad del HTMLInputElement
de HTMLInputElement
:
Necesitaba usar element.attr (''form'') en lugar de element.form
Yo uso Firefox en Fedora 12
Si usa jQuery y tiene un control para cualquier elemento de formulario, necesita obtener (0) el elemento antes de usar .form
var my_form = $(''input[name=first_name]'').get(0).form;
Usando jQuery :
function doSomething(element) {
var form = $(element).closest("form").get().
//do something with the form.
}
Uso un poco de código jQuery y código javascript sin estilo antiguo.
$($(this)[0].form)
Esta es una referencia completa al formulario que contiene el elemento
Y uno más ...
var _e = $(e.target); // e being the event triggered
var element = _e.parent(); // the element the event was triggered on
console.log("_E " + element.context); // [object HTMLInputElement]
console.log("_E FORM " + element.context.form); // [object HTMLFormElement]
console.log("_E FORM " + element.context.form.id); // form id
simplemente como:
alert( $(this.form).attr(''name'') );
function doSomething(element) {
var form = element.form;
}
y en el html, necesita encontrar ese elemento y agregar el "formulario" de atributo para conectarse a ese formulario, consulte http://www.w3schools.com/tags/att_input_form.asp pero este formulario no lo hace. soporte IE , por ejemplo, debe pasar la identificación del formulario directamente.