2010-02-25 29 views
27

Pregunta rápida ... Me preguntaba cómo puedo conseguir que esto suceda.¿Cómo puedo establecer el atributo Nombre de un campo de entrada usando Jquery?

Está bien que tienen un campo de entrada, como por ejemplo:

<input type="text" id="input1" size="10" name="" value="" class="checked other_amount" onfocus="Toggle('radio1', 'input1');" /> 

me gustaría hacer clic en un div con un diámetro interior de #resetPrompt y llenar el atributo 'name' vacío de la entrada con "other_amount"

estoy fuera de las ideas ha sido un día largo

gracias chicos,

Matt

Respuesta

45
$('#resetPrompt').click(function(){ 
    $('#input1').attr('name', 'other_amount'); 
}); 
+1

Como se ha señalado anteriormente, este ganó' Trabajar en MSIE7 y versiones anteriores. La solución es reescribir la línea interna usando .prop (..): $ ('# input1'). Attr ('name', 'other_amount') || $ ('# input1'). prop ('nombre', 'other_amount'); – esteewhy

1

Si "other_amount" es el ID de la otra entrada, utilice attr y val como sigue:

$("#resetPrompt").click(function(){ 
    var otherValue = $("#other_amount").val(); 
    $("#input1").attr("name", "someName"); 
} 
+0

¡Todo esto hombre de trabajo gracias! – TikaL13

1

Suponiendo que "other_amount" es el nombre, no id de la entrada correspondiente.

$('#resetPrompt').click(function() { 
    $('#input1').attr('name', $('[name=other_amount]').val()); 
}); 
+0

¡Todos estos trabajos hombre gracias! – TikaL13

4

Esto es para todos los empleados de Google por ahí:

Cabe señalar que la propuesta de Alex, aunque en la mayoría de los navegadores funcional "reales", no funciona en IE 8 y por debajo (jQuery 1.6.2) Al configurar el atributo "nombre" de un campo de entrada, Microsoft, para abordar un error, agregó un atributo ficticio "submitName" cuando los campos de entrada dinámicos están conectados al DOM.

Para solucionar el problema de decir, o bien forzar a los usuarios a actualizar, usar Firefox, Chrome, etc., o se tendrá que añadir manualmente el campo de entrada:

$("#resetPrompt").click(function(){ 
    $("#input1").remove(); 
    $("#input_container").append('<input id="input1" name="' + other_amount + "' type="text" class="checked other_amount" onFocus="Toggle(\'radio1\', \'input1\');" />'); 
}); 
+0

Confirmar: no se puede establecer el atributo @name con $ .name (.., ..) en MSIE7 - la entrada simplemente conserva el valor anterior y no ocurre nada. ¿Se aborda en la versión jQuery más reciente? – esteewhy

Cuestiones relacionadas