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>

Respuestas:


270

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

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

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')

18
var value_input = $("input[name*='xxxx']").val();

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 .


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'.


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 />

1
var theName;

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

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

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'));
});

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>

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.