.attr() возвращающее имя атрибута

77
8

У меня есть элемент html:

<input type='text' runat='server' name='RM1' id='RM1' required='5' readonly>

Мне нужно иметь значение атрибута "требуется", которое я использую с помощью jQuery, но когда я запускаю

$('#RM1').attr('required')

Возвращаемое значение "Required", хотя оно должно быть 5. когда я запускаю $('#RM1').attr('id') возвращается RM1.

Кто-нибудь знает, что я делаю неправильно?

примечание: код генерируется С#, для которого runat установлен на server.

спросил(а) 2021-01-25T11:21:59+03:00 4 месяца, 2 недели назад
1
Решение
98

требуется зарезервированное имя атрибута для проверки формы

Реализации различаются, но это истинно или ложно, "Обязательный" оценивает значение true, и этот атрибут вообще не нуждается в значении, если атрибут существует = true, если не = false,

так:

<input required >
<!-- returns the same value (truthy) as -->
<input required="23432abc" >

ваше решение: используйте другое имя атрибута!

ответил(а) 2021-01-25T11:21:59+03:00 4 месяца, 2 недели назад
62

Атрибут <input> require имеет тип boolean. Он не может содержать числовое значение:

Если атрибут присутствует, его значение должно быть либо пустой строкой, либо значением, которое является ASCII-регистро-независимым совпадением для атрибутов канонического имени, без начального или конечного пробела.

Вы написали на самом деле недействительный HTML (5):


Ошибка: Плохое значение 5 для атрибута, требуемого для ввода элемента.

Тем не менее, ваш браузер по-прежнему обрабатывает это неправильное значение изящно, интерпретируя его как "required".

См. Также: Установка атрибута с именем "required" и любое значение с помощью JQuery не работает

ответил(а) 2021-01-25T11:21:59+03:00 4 месяца, 2 недели назад
45

Согласно ссылке на атрибут HTML: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes

Обязательный атрибут зарезервирован

Используйте attr как requiredNum вместо этого, см. Пример:

console.log( $('#RM1').attr('requiredNum') )
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' runat='server' name='RM1' id='RM1' requiredNum='5' readonly>

ответил(а) 2021-01-25T11:21:59+03:00 4 месяца, 2 недели назад
44

Это потому, что требуется булев атрибут.

если вы хотите сохранить пользовательские данные, вы можете использовать data-

пример

var id = $('#RM1').data('id');

console.log(id);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' runat='server' name='RM1' id='RM1' data-id='5' readonly>

ответил(а) 2021-01-25T11:21:59+03:00 4 месяца, 2 недели назад
45

Используйте набор данных элемента, например, вы можете:

<input type='text' runat='server' name='RM1' id='RM1' data-required='5' readonly>

Когда вам нужно получить значение "data-required", выполните следующие действия:

$('#RM').data('required') // returns 5

ответил(а) 2021-01-25T11:21:59+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема