Necesito para obtener una referencia a la FORMA de los padres de una ENTRADA cuando sólo tengo una referencia a la ENTRADA. Es esto posible con JavaScript? El uso de jQuery, si quieres.

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"));
InformationsquelleAutor Ropstah | 2009-06-13

10 Comentarios

  1. 176

    Nativo de elementos del DOM que son las entradas tienen un form atributo que apunta a la forma a la que pertenecen:

    var form = element.form;
    alert($(form).attr('name'));

    Según w3schools, el .form de la propiedad de los campos de entrada es soportado por internet explorer 4.0+, Firefox 1.0+, Opera 9.0+, lo que es aún más navegadores que jQuery garantías, por lo que debe atenerse a este.

    Si esto fuera un diferente tipo de elemento (no una <input>), usted puede encontrar el más cercano de los padres con más cercano:

    var $form = $(element).closest('form');
    alert($form.attr('name'));

    También ver este MDN enlace en el form propiedad de HTMLInputElement:

    • Bien esto funciona.. Acerca de la forma de atributo. Yo sólo lo intentó y que también funciona. Pero este no es compatible en todos los navegadores que usted está diciendo?
    • Estoy bastante seguro de que es. No estoy 100% seguro, por lo que no quiero prometer nada. Estoy mirando ahora mismo…
    • El uso del elemento.formulario – que va a trabajar en más navegadores que jQuery tiene. Es también una referencia de la propiedad, por lo que será de alrededor de mil veces más eficiente que caminar hasta el DOM árbol más cercano().
    • Estoy de acuerdo. Como ya he dicho, no me inicialmente seguro de si la forma de propiedad fue ampliamente implementado en todos los navegadores comunes. He editado mi respuesta a más explícitamente lista esta como la mejor opción, mientras yo voy más cercano como una golosina si este era un tipo diferente de elemento.
    • Parece que funciona también con otros tipos de entrada como seleccionar. Es bueno saber.
    • ¿Y si tenemos un formulario de entrada de los grupos y desea agregar una nueva entrada de grupo en función de las entradas que ya se han completado? He tratado de $(‘form-grupo de entrada’).en(‘focus’, function(){ $(this).más cercano(‘form-group’) }); sin mucha suerte, sin realmente llegar el formulario de etiqueta de grupo. Alguna idea de por qué no va a evitar que atraviesa el nodo de árbol?

  2. 38

    Cada entrada tiene un form propiedad que apunta a la forma de la entrada pertenece, así que simplemente:

    function doSomething(element) {
      var form = element.form;
    }
  3. 4

    Yo uso un poco de jQuery y de estilo antiguo javascript – menos código

    $($(this)[0].form) 

    Esta es una referencia completa el formulario que contiene el elemento

    • Básicamente lo que hace es decir «hacer de este un objeto jQuery y, a continuación, que no es un objeto jQuery».
    • caray, ¿por qué no hacer $(this.form)?
  4. 3

    Utilizando jQuery:

    function doSomething(element) {
        var form = $(element).closest("form").get().
        //do something with the form.
    }
  5. 2

    Si el uso de jQuery y tiene un identificador para cualquier elemento de formulario, usted necesita para obtener(0) el elemento antes de usar .formulario de

    var my_form = $('input[name=first_name]').get(0).form;
  6. 2

    Que necesitaba usar element.attr('form') en lugar de element.form.

    Yo uso Firefox en Fedora 12.

  7. 0

    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
  8. -2

    funcionaría esto? (dejando de acción en blanco presenta forma de volver 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>

    «esto» sería el elemento select, .forma sería su formulario principal. A la derecha?

Dejar respuesta

Please enter your comment!
Please enter your name here