Obtener el valor del nombre de atributo de <input>

134

Cómo obtener el valor del nombre de atributo de una etiqueta de entrada usando jQuery. Por favor ayuda.

<input name='xxxxx' value=1>
Kaartz
fuente

Respuestas:

270

Dé a su entrada una ID y use el attrmétodo:

var name = $("#id").attr("name");
djdd87
fuente
33

Use el attrmétodo de jQuery así:

alert($('input').attr('name'));

Tenga en cuenta que también puede usar attrpara establecer los valores de los atributos especificando el segundo argumento:

$('input').attr('name', 'new_name')
Sarfraz
fuente
18
var value_input = $("input[name*='xxxx']").val();
Laura Riera
fuente
Esta publicación se marca automáticamente como de baja calidad porque es un código muy corto / único. ¿Le importaría expandirlo agregando texto para explicar cómo resuelve el problema?
gung
2
En realidad no resuelve el problema. OP quiere obtener el valor del nombre; esto supone que ya lo sabes.
Felwithe
16

Si bien no se puede negar que jQuery es una herramienta poderosa, es una muy mala idea usarla para una operación tan trivial como "obtener el valor de atributo de un elemento".

A juzgar por la respuesta aceptada actual, voy a suponer que pudo agregar un atributo de ID a su elemento y usarlo para seleccionarlo.

Con eso en mente, aquí hay dos piezas de código. Primero, el código que se le dio en la Respuesta aceptada:

$("#ID").attr("name");

Y segundo, la versión de Vanilla JS :

document.getElementById('ID').getAttribute("name");

Mis resultados:

  • jQuery: 300k operaciones / segundo
  • JavaScript: 11,000k operaciones / segundo

Puedes probar por ti mismo aquí . La versión "JavaScript simple" es más de 35 veces más rápida que la versión jQuery.

Ahora, eso es solo para una operación, con el tiempo tendrás más y más cosas en tu código. Quizás para algo particularmente avanzado, la solución óptima de "JavaScript puro" tardaría un segundo en ejecutarse. ¡La versión jQuery puede tardar entre 30 segundos y un minuto entero! ¡Eso es enorme! La gente no se va a quedar sentada para eso. ¡Incluso el navegador se aburrirá y le ofrecerá la opción de matar la página web por tomar demasiado tiempo!

Como ya he dicho, jQuery es una herramienta poderosa, pero debería no ser considerada la respuesta a todo .

Niet the Dark Absol
fuente
buena respuesta, hice una verificación cruzada para que javascript sea más rápido que jquery ¿verdad?
Rijo
Respondió esta pregunta 4 años después de que se le hizo la pregunta y no la respondió. La persona preguntó cómo hacerlo en jQuery.
Depende
Vanilla JS! ?? bromeando, pasé media hora investigando qué demonios es Vanilla JS.
Basheer AL-MOMANI
Quizás el desarrollador no lo sabe. Era consciente del hecho de que los frameworks como jQuery causan cierta sobrecarga. Pero no esperaba ralentizar tareas tan simples en el factor 35 al usar jQuery ...
Daniel
7

Necesita escribir un selector que seleccione el correcto <input>primero. Lo ideal es usar la ID del elemento $('#element_id'), en caso de que la ID de su contenedor $('#container_id input')o la clase del elemento $('input.class_name').

Su elemento no tiene ninguno de estos y ningún contexto, por lo que es difícil decirle cómo seleccionarlo.

Una vez que haya descubierto el selector adecuado, usaría el método attr para acceder a los atributos del elemento. Para obtener el nombre, usaría el $(selector).attr('name')que devolvería (en su ejemplo) 'xxxxx'.

meagar
fuente
5

Una mejor manera podría ser usar 'this', toma el nombre del 'id' y lo usa. Siempre que agregue el nombre de clase llamado 'mytarget'.

Cada vez que alguno de los campos que tenga un objetivo cambie, aparecerá un cuadro de alerta con el nombre de ese campo. ¡Simplemente corte y pegue todo el script para que funcione!

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
 $('.mytarget').change(function() {
var name1 = $(this).attr("name");
alert(name1);
 });
});
</script>

Name: <input type="text" name="myname" id="myname" class="mytarget"><br />
Age: <input type="text" name="myage" id="myage" class="mytarget"><br />
Mikeys4u
fuente
1
var theName;

theName = $("input selector goes here").attr("name");
Arrozal
fuente
1

utilizando el valor obtener el nombre de entrada

 $('input[value="1"]').attr('name');

usando id obtener el nombre de entrada

 $('input[class="id"]').attr('name');
   $('#id').attr('name');

usando la clase obtener el nombre de entrada

 $('input[value="classname"]').attr('name');
   $('.classname').attr('name');  //if classname have unique value
nirali
fuente
0

Si está tratando con un solo elemento, preferiblemente debe usar el idselector como se indica en la respuesta GenericTypeTea y obtener el nombre como $("#id").attr("name");.

Pero si desea, como hice cuando encontré esta pregunta, una lista con todos los nombres de entrada de una clase específica (en mi ejemplo, una lista con los nombres de todas las casillas de verificación sin marcar con .selectable-checkboxclase), podría hacer algo como:

var listOfUnchecked = $('.selectable-checkbox:unchecked').toArray().map(x=>x.name);

o

var listOfUnchecked = [];
$('.selectable-checkbox:unchecked').each(function () {
    listOfUnchecked.push($(this).attr('name'));
});
Antonio Correia
fuente
0

Pase la clase a la etiqueta de entrada y acceda al valor del nombre utilizando class.

<input class="test-class" name='xxxxx' value=1>

<script>
    $('.test-class').attr('name');
</script>

O también puede acceder al valor usando id.

<input id="test-id" name='xxxxx' value=1>

<script>
    $('#test-id').attr('name');
</script>
Sheetal Mehra
fuente
-2

Para la siguiente línea, inicialmente se enfrentó a un problema al no proporcionar un código único que el valor 'currnetRowAppName' no está ocupando espacio con la cadena. Entonces, después de dar un código único '"+row.applicationName+"', también ocupa espacio.

Ejemplo:

<button class='btn btn-primary btn-xs appDelete' type='button' currnetRowAppName='"+row.applicationName+"' id="+row.id+ >

var viewAppNAME = $(this).attr("currnetRowAppName");
alert(viewAppNAME)

Esto está funcionando bien.

Senthil Kumar SK
fuente