Ruft den Attributnamenwert von <Eingabe> ab

134

So ermitteln Sie den Attributnamenwert eines Eingabe-Tags mithilfe von jQuery. Bitte helfen Sie.

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

Antworten:

270

Geben Sie Ihrer Eingabe eine ID und verwenden Sie die folgende attrMethode:

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

Verwenden Sie die attrMethode von jQuery wie folgt:

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

Beachten Sie, dass Sie attrdie Attributwerte auch festlegen können, indem Sie das zweite Argument angeben:

$('input').attr('name', 'new_name')
Sarfraz
quelle
18
var value_input = $("input[name*='xxxx']").val();
Laura Riera
quelle
Dieser Beitrag wird automatisch als minderwertig gekennzeichnet, da er so kurz / nur Code ist. Würde es Ihnen etwas ausmachen, es zu erweitern, indem Sie Text hinzufügen, um zu erklären, wie es das Problem löst?
Gung - Reinstate Monica
2
Es löst das Problem tatsächlich nicht. OP möchte den Namenswert erhalten; Dies setzt voraus, dass Sie es bereits wissen.
Felwithe
16

Es ist nicht zu leugnen, dass jQuery ein leistungsstarkes Tool ist, aber es ist eine wirklich schlechte Idee, es für eine so triviale Operation wie "Attributwert eines Elements abrufen" zu verwenden.

Nach der aktuell akzeptierten Antwort zu urteilen, gehe ich davon aus, dass Sie Ihrem Element ein ID-Attribut hinzufügen und dieses zur Auswahl verwenden konnten.

In diesem Sinne sind hier zwei Codeteile. Zunächst der Code, den Sie in der akzeptierten Antwort erhalten haben:

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

Und zweitens die Vanilla JS- Version davon:

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

Meine Ergebnisse:

  • jQuery: 300.000 Operationen / Sekunde
  • JavaScript: 11.000.000 Operationen / Sekunde

Sie können selbst testen hier . Die "Plain JavaScript" -Version ist über 35-mal schneller als die jQuery-Version.

Nun, das ist nur für eine Operation, im Laufe der Zeit werden immer mehr Dinge in Ihrem Code vor sich gehen. Vielleicht würde für etwas besonders Fortgeschrittenes die optimale "reine JavaScript" -Lösung eine Sekunde dauern. Die jQuery-Version kann 30 Sekunden bis eine ganze Minute dauern! Das ist riesig! Die Leute werden dafür nicht herumsitzen. Sogar der Browser wird sich langweilen und Ihnen die Möglichkeit bieten, die Webseite zu lange zu beenden!

Wie gesagt, jQuery ist ein mächtiges Werkzeug, aber es sollte nicht als Antwort auf alles angesehen werden .

Niet the Dark Absol
quelle
nette antwort, ich habe sie überprüft, damit javascript schneller ist als jquery, oder?
Rijo
Sie haben diese Frage 4 Jahre nach der Beantwortung der Frage beantwortet und die Frage nicht beantwortet. Die Person fragte, wie es in jQuery geht. Es liegt an dem Programmierer, ob er jQuery oder Vanilla JS verwendet, und es liegt außerhalb des Rahmens der Frage
Zachary Weixelbaum
Vanilla JS! ?? Im Scherz habe ich eine halbe Stunde lang nachgeforscht, was der Hack Vanilla JS ist.
Basheer AL-MOMANI
Vielleicht weiß der Entwickler es nicht. Mir war bewusst, dass Frameworks wie jQuery einen gewissen Overhead verursachen. Aber ich hatte nicht erwartet, solche einfachen Aufgaben in Faktor 35 zu verlangsamen, wenn ich jQuery benutze ...
Daniel
7

Sie müssen einen Selektor schreiben, der <input>zuerst den richtigen auswählt . Idealerweise verwenden Sie $('#element_id')die ID des Elements , andernfalls die ID des Containers $('#container_id input')oder die Klasse des Elements $('input.class_name').

Ihr Element hat keines davon und keinen Kontext, daher ist es schwierig, Ihnen zu sagen, wie Sie es auswählen sollen.

Sobald Sie den richtigen Selektor gefunden haben, verwenden Sie die attr- Methode, um auf die Attribute des Elements zuzugreifen. Um den Namen zu erhalten, würden Sie verwenden, $(selector).attr('name')der zurückkehren würde (in Ihrem Beispiel) 'xxxxx'.

meagar
quelle
5

Ein besserer Weg könnte darin bestehen, 'this' zu verwenden. Es wird der Name der 'id' verwendet und verwendet. Solange Sie den Klassennamen 'mytarget' hinzufügen.

Wenn sich eines der Felder mit einem Ziel ändert, wird ein Warnfeld mit dem Namen dieses Felds angezeigt. Schneiden Sie einfach das gesamte Skript aus und fügen Sie es ein, damit es funktioniert!

<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
quelle
1
var theName;

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

using value get input name

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

using id get input name

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

using class get input name

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

Wenn Sie es vorzugsweise mit einem einzelnen Elementid zu tun haben, sollten Sie den Selektor wie in der Antwort von GenericTypeTea angegeben verwenden und den Namen wie erhalten $("#id").attr("name");.

Wenn Sie jedoch wie bei der Suche nach dieser Frage eine Liste mit allen Eingabenamen einer bestimmten Klasse (in meinem Beispiel eine Liste mit den Namen aller nicht aktivierten Kontrollkästchen mit .selectable-checkboxKlasse) möchten, können Sie Folgendes tun:

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

oder

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

Übergeben Sie die Klasse an das Eingabe-Tag und greifen Sie mithilfe der Klasse auf den Namenswert zu.

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

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

Sie können auch mit der ID auf den Wert zugreifen.

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

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

In der folgenden Zeile gab es zunächst ein Problem mit der Angabe eines einzelnen Codes, für den der Wert 'currnetRowAppName' keinen Platz mit der Zeichenfolge belegt. Nachdem Sie also einen einzelnen Code angegeben haben '"+row.applicationName+"', nimmt er auch Platz ein.

Beispiel:

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

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

Das funktioniert gut.

Senthil Kumar SK
quelle