Получить значение имени атрибута <input>

134

Как получить значение имени атрибута входного тега с помощью jQuery. Пожалуйста помоги.

<input name='xxxxx' value=1>
Kaartz
источник

Ответы:

270

Введите идентификатор и используйте attrметод:

var name = $("#id").attr("name");
djdd87
источник
33

Используйте attrметод jQuery следующим образом:

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

Обратите внимание, что вы также можете использовать attrдля установки значений атрибутов, указав второй аргумент:

$('input').attr('name', 'new_name')
Sarfraz
источник
18
var value_input = $("input[name*='xxxx']").val();
Лаура Риера
источник
Это сообщение автоматически помечается как низкое качество, потому что это очень короткий / единственный код. Не могли бы вы расширить его, добавив текст, объясняющий, как он решает проблему?
gung - Reinstate Monica
2
На самом деле это не решает проблемы. OP хочет получить значение имени; это предполагает, что вы это уже знаете.
felwithe
16

Хотя нельзя отрицать, что jQuery является мощным инструментом, использовать его для такой тривиальной операции, как «получение значения атрибута элемента» - действительно плохая идея.

Судя по принятому в настоящее время ответу, я предполагаю, что вы смогли добавить атрибут ID к своему элементу и использовать его для его выбора.

Имея это в виду, вот два фрагмента кода. Во-первых, код, данный вам в принятом ответе:

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

И, во-вторых, его версия Vanilla JS :

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

Мои результаты:

  • jQuery: 300 тыс. операций в секунду
  • JavaScript: 11 000 тыс. Операций в секунду

Вы можете проверить себя здесь . Версия "простого JavaScript" более чем в 35 раз быстрее, чем версия jQuery.

Это всего лишь одна операция, и со временем в вашем коде будет происходить все больше и больше вещей. Возможно, для чего-то особенно продвинутого оптимальное решение «на чистом JavaScript» заняло бы одну секунду. Версия jQuery может занять от 30 секунд до целой минуты! Это огромно! Люди не собираются сидеть сложа руки. Даже браузеру станет скучно, и он предложит вам отключить веб-страницу, если она займет слишком много времени!

Как я уже сказал, jQuery - мощный инструмент, но его не следует рассматривать как ответ на все вопросы .

Ницца Темный Абсол
источник
хороший ответ, я перепроверил, так что javascript быстрее, чем jquery, верно?
Rijo
Вы ответили на этот вопрос через 4 года после того, как вопрос был задан, и не ответили на него. Человек спросил, как это сделать в jQuery. Программисту решать, использовать ли jQuery или Vanilla JS, и это выходит за рамки вопроса,
Захари Вейксельбаум,
Vanilla JS! ?? шучу, я полчаса исследовал, что такое взлом Vanilla JS.
Basheer AL-MOMANI
Возможно, разработчик не знает. Я знал, что такие фреймворки, как jQuery, вызывают некоторые накладные расходы. Но я не ожидал, что при использовании jQuery замедляю такие простые задачи в 35 раз ...
Дэниел
7

Вам нужно написать селектор, который <input>сначала выбирает правильный . В идеале вы должны использовать идентификатор элемента $('#element_id'), в противном случае - идентификатор контейнера $('#container_id input')или класса элемента $('input.class_name').

У вашего элемента нет ни одного из них, ни контекста, поэтому сложно сказать вам, как его выбрать.

После того, как вы определились с подходящим селектором, вы должны использовать метод attr для доступа к атрибутам элемента. Чтобы получить имя, вы должны использовать $(selector).attr('name')который вернет (в вашем примере) 'xxxxx'.

Мегар
источник
5

Лучше было бы использовать this, он берет любое имя id и использует его. Пока вы добавляете имя класса mytarget.

Всякий раз, когда какое-либо из полей, для которых задана цель, изменяется, будет отображаться окно предупреждения с именем этого поля. Просто вырезайте и пропустите весь сценарий, чтобы он заработал!

<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
источник
1
var theName;

theName = $("input selector goes here").attr("name");
Пэдди
источник
1

используя значение получить имя входа

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

используя идентификатор получить имя входа

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

используя класс получить имя ввода

 $('input[value="classname"]').attr('name');
   $('.classname').attr('name');  //if classname have unique value
nirali
источник
0

Если вы имеете дело с одним элементом, желательно использовать idселектор, как указано в ответе GenericTypeTea, и получить имя вроде $("#id").attr("name");.

Но если вы хотите, как я сделал, когда нашел этот вопрос, список со всеми входными именами определенного класса (в моем примере это список с именами всех неотмеченных флажков с .selectable-checkboxклассом), вы можете сделать что-то вроде:

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

или

var listOfUnchecked = [];
$('.selectable-checkbox:unchecked').each(function () {
    listOfUnchecked.push($(this).attr('name'));
});
Антонио Коррейя
источник
0

Передайте класс входному тегу и получите доступ к значению имени с помощью class.

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

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

Или вы также можете получить доступ к значению, используя id.

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

<script>
    $('#test-id').attr('name');
</script>
Sheetal Mehra
источник
-2

В строке ниже изначально возникла проблема с указанием единственного кода, в котором значение currnetRowAppName не занимает пробел со строкой. Итак, после этого, давая единственный код '"+row.applicationName+"', он также занимает место.

Пример:

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

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

Это работает нормально.

Сентил Кумар СК
источник