2012-03-13 21 views
10

estoy usando el siguiente código para adjuntar un evento para el botón de envío de un formulario:¿Obtener el ID de un formulario?

$('form.manage-users-form').on('click','button.special',function() { 

    if ($(this).hasClass('selected')){ 
     console.log('This user is already special'); 
    } else { 

     $(this).parent().find('button').removeClass('selected'); 
     $(this).addClass('selected'); 

     var user_id = $(this).closest("form[id]").val(); 

     console.log('This user is now special'); 
     console.log(user_id); 
    } 
    return false; 
}); 

Y se puede ver que yo también estoy tratando de conseguir la identificación de la forma, pero cuando compruebo la consola obtengo (an empty string). ¿Por qué es eso y cómo puedo obtener correctamente el ID del formulario?

Respuesta

27

ha intentado?

var user_id = $(this).closest("form").attr('id'); 

El id del elemento es un atributo, se puede extraer cualquier atributo (incluyendo el di) usando .attr().

.val() se utiliza para extraer el valor del elemento, lo que no tiene sentido en un formulario.

Más información:

.val()
.attr()

+0

Con las versiones más recientes de jQuery, generalmente quiere '.prop()' en lugar de '.attr()'. Independientemente, ** no necesita jQuery para recuperar el ID de un elemento. ** http://stackoverflow.com/questions/4651923/when-to-use-vanilla-javascript-vs-jquery –

5

.val() se utiliza para obtener el valor de los elementos de formulario, no de los atributos.

Uso .attr():

var user_id = $(this).closest("form[id]").attr('id'); 

Puede también extracto de la DOMElement y usar javascript puro para obtener el ID:

var user_id = $(this).closest("form[id]")[0].id; 
1

Pruebe lo siguiente:

var user_id = $(this).closest("form").attr("id"); 

estará de vuelta con una edición tan pronto como lo prueba esta.

6

Pruebe esto en su lugar.

var formid = $('form').attr('id'); 

Te ayudaremos.

Cuestiones relacionadas