Отримайте значення імені атрибута <input>


134

Як отримати значення імені атрибута вхідного тегу за допомогою jQuery. Будь ласка, допоможіть.

<input name='xxxxx' value=1>

Відповіді:


270

Введіть свій ідентифікатор і скористайтеся attrметодом:

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

33

Використовуйте такий attrметод jQuery:

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

Зауважте, що ви також attrможете встановити значення атрибутів, вказавши другий аргумент:

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

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

Ця публікація автоматично позначена як низька якість, оскільки це такий короткий / єдиний код. Ви не хочете розширити його, додавши текст, щоб пояснити, як він вирішує проблему?
gung - Відновіть Моніку

2
Це фактично не вирішує проблему. ОП хоче отримати значення імені; це передбачає, що ви вже це знаєте.
felwithe

16

Хоча не можна заперечувати, що jQuery є потужним інструментом, це дуже погана ідея використовувати його для такої тривіальної операції, як "отримати значення атрибута елемента".

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

Зважаючи на це, ось два фрагменти коду. По-перше, код, наданий вам у Прийнятому відповіді:

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

І по-друге, його версія Vanilla JS :

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

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

  • jQuery: 300k операцій в секунду
  • JavaScript: 11 000k операцій в секунду

Ви можете перевірити на собі тут . Вірогідність звичайного JavaScript у 35 разів швидша ніж версія jQuery.

Тепер це лише одна операція, з часом у вашому коді з’являться все нові і нові речі. Можливо, для чогось особливо просунутого, оптимальне рішення "чистого JavaScript" зайняло б одну секунду. Версія jQuery може зайняти від 30 секунд до цілої хвилини! Це величезне! Люди не збираються за це сидіти. Навіть браузер набридне і запропонує вам можливість вбити веб-сторінку за занадто довго!

Як я вже сказав, jQuery є потужним інструментом, але його не слід вважати відповіддю на все .


приємна відповідь, я перехресно перевірив, тому javascript швидше, ніж jquery так?
Рійо

Ви відповіли на це запитання через 4 роки після того, як поставили запитання, і ви не зверталися з цим питанням. Людину запитали, як це зробити в jQuery. Програміст залежить від того, чи використовувати jQuery чи Vanilla JS, і це не стосується питання
Захарі Вайксельбаум

Ваніль JS! жартую, я витратив півгодини на дослідження, що таке злом Vanilla JS.
Basheer AL-MOMANI

Можливо, розробник не знає. Мені було відомо про те, що такі рамки, як jQuery, спричиняють надмірні витрати. Але я не очікував фактор уповільнення таких простих завдань 35 при використанні jQuery ...
Даніель

7

Вам потрібно написати селектор, який вибере правильний <input>спочатку. В ідеалі ви використовуєте ідентифікатор елемента $('#element_id'), не маючи ідентифікатора контейнера $('#container_id input')або класу елемента$('input.class_name') .

У вашого елемента немає жодного з цього і жодного контексту, тому важко сказати, як його вибрати.

Після того, як ви зрозуміли правильний селектор, ви скористаєтеся методом attr для доступу до атрибутів елемента. Щоб отримати ім'я, ви використовували $(selector).attr('name')б повернення (у вашому прикладі) 'xxxxx'.


5

Кращим способом може бути використання цього "цього", він бере будь-яке ім'я "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 />


1

використовуючи значення отримати вхідне ім'я

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

за допомогою id отримати ім'я введення

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

використовуючи клас отримати ім'я введення

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

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

Передайте класу тегу введення та отримайте доступ до значення імені за допомогою класу.

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

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

Це добре працює.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.