Ottieni il valore del nome dell'attributo di <input>


134

Come ottenere il valore del nome dell'attributo di un tag di input utilizzando jQuery. Per favore aiuto.

<input name='xxxxx' value=1>

Risposte:


270

Dai al tuo input un ID e usa il attrmetodo:

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

33

Usa il attrmetodo di jQuery in questo modo:

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

Nota che puoi anche usare attrper impostare i valori dell'attributo specificando il secondo argomento:

$('input').attr('name', 'new_name')

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

Questo post viene automaticamente contrassegnato come di bassa qualità perché è un codice così breve / unico. Ti dispiacerebbe espanderlo aggiungendo del testo per spiegare come risolve il problema?
gung - Ripristina Monica il

2
In realtà non risolve il problema. OP vuole ottenere il valore del nome; questo presuppone che tu lo sappia già.
felwithe

16

Mentre non si può negare che jQuery sia uno strumento potente, è una pessima idea usarlo per un'operazione così banale come "ottenere il valore dell'attributo di un elemento".

A giudicare dalla risposta attualmente accettata, suppongo che tu sia stato in grado di aggiungere un attributo ID al tuo elemento e usarlo per selezionarlo.

Con questo in mente, ecco due parti di codice. Innanzitutto, il codice fornito nella risposta accettata:

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

E in secondo luogo, la versione Vanilla JS di esso:

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

I miei risultati:

  • jQuery: 300k operazioni / secondo
  • JavaScript: 11.000.000 operazioni / secondo

Puoi provare tu stesso qui . La versione "semplice JavaScript" è oltre 35 volte più veloce della versione jQuery.

Ora, è solo per un'operazione, nel tempo avrai sempre più cose in corso nel tuo codice. Forse per qualcosa di particolarmente avanzato, la soluzione ottimale "puro JavaScript" richiederebbe un secondo per essere eseguita. La versione jQuery potrebbe richiedere da 30 secondi a un minuto intero! È enorme! La gente non si siederà per questo. Anche il browser si annoierà e ti offrirà la possibilità di uccidere la pagina web per troppo tempo!

Come ho detto, jQuery è uno strumento potente, ma dovrebbe non essere considerato la risposta a tutto .


bella risposta, ho fatto un controllo incrociato, quindi JavaScript è più veloce di jquery, giusto?
Rijo,

Hai risposto a questa domanda 4 anni dopo la domanda e non hai risposto alla domanda. La persona ha chiesto come farlo in jQuery. Spetta al programmatore se utilizzare jQuery o Vanilla JS ed è al di fuori dell'ambito della domanda
Zachary Weixelbaum,

Vanilla JS! ?? scherzando, ho passato mezz'ora a cercare cos'è l'hack Vanilla JS.
Basheer AL-MOMANI,

Forse lo sviluppatore non lo sa. Ero consapevole del fatto che framework come jQuery causano un certo sovraccarico. Ma non mi aspettavo di rallentare compiti così semplici nel fattore 35 quando usavo jQuery ...
Daniel,

7

Devi scrivere un selettore che seleziona <input>prima il corretto . Idealmente si utilizza l'ID dell'elemento $('#element_id'), in caso contrario l'ID del relativo contenitore $('#container_id input')o la classe dell'elemento $('input.class_name').

Il tuo elemento non ha nessuno di questi e nessun contesto, quindi è difficile dirti come selezionarlo.

Una volta individuato il selettore appropriato, utilizzare il metodo attr per accedere agli attributi dell'elemento. Per ottenere il nome, useresti $(selector).attr('name')quale sarebbe restituito (nel tuo esempio) 'xxxxx'.


5

Un modo migliore potrebbe essere usare "questo", prende qualunque sia il nome dell '"id" e lo usa. Finché aggiungi il nome della classe chiamato "mytarget".

Ogni volta che uno dei campi che hanno target cambia, allora mostrerà una casella di avviso con il nome di quel campo. Basta tagliare e incollare l'intera sceneggiatura affinché funzioni!

<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

usando il valore ottieni il nome di input

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

usando id ottieni il nome di input

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

usando la classe ottieni il nome di input

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

0

Se hai a che fare con un singolo elemento preferibilmente dovresti usare il idselettore come indicato sulla risposta GenericTypeTea e ottenere il nome simile $("#id").attr("name");.

Ma se vuoi, come ho fatto quando ho trovato questa domanda, un elenco con tutti i nomi di input di una classe specifica (nel mio esempio un elenco con i nomi di tutte le caselle di controllo non selezionate con .selectable-checkboxclasse) potresti fare qualcosa del tipo:

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

o

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

0

Passa la classe al tag di input e accedi al valore del nome usando class.

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

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

Oppure puoi anche accedere al valore usando id.

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

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

-2

Per la riga seguente, inizialmente affrontato il problema di non dare un singolo codice che il valore 'currnetRowAppName' non occupa spazio con stringa. Quindi, dopo aver dato un singolo codice '"+row.applicationName+"', occupa anche spazio.

Esempio:

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

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

Funziona benissimo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.