jQuery додайте необхідні поля введення


171

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

Я хочу взяти це

 <input type="text" name="first_name" value="" id="freeform_first_name"
 maxlength="150">

і вимагати автоматичного додавання необхідного перед тегом закриття

 <input type="text" name="first_name" value="" id="freeform_first_name"
 maxlength="150" required>

Я думав, що можу щось робити по лінії

$("input").attr("required", "true");

Але це не працює. Будь-яка допомога дуже цінується.


2
Чи не загорнутий в дім готовий? $(function(){....});
ПСЛ

Я використовую цей jsfiddle.net/japanslanguagefriend/LEZ4r
Miura-shi

якщо 'input' - це ідентифікатор, у jquery тут відсутній #.
Джон Мейєр

@JohnMeyer "input" - це селектор тегів. Не потрібно #, якщо орієнтувати вхідні теги
Спартак

Відповіді:


420
$("input").prop('required',true);

DEMO FIDDLE


1
Хм, додано кнопку подання, але все ще не підтверджує або додає необхідний атрибут до полів введення. jsfiddle.net/japanslanguagefriend/LEZ4r
Miura-shi

1
@JohnMeyer "input" - це селектор тегів
morefromalan

1
отримав TypeError: element.prop is not a functionпомилку
davideghz

@ Miura-shi Ви пропускаєте <form></form>теги у своєму jsFiddle
JESTech

Якщо це може комусь допомогти: спочатку це не працювало для мене, тому що я дзвонив .prop('required',true)на вхід, перш ніж дзвонити .css("display", "block")на нього.
електротип

52

Ви можете зробити це, використовуючи attr, помилка, яку ви зробили, полягає в тому, що ви ставите справжні внутрішні лапки. замість цього спробуйте це:

$("input").attr("required", true);

2
@JohnMeyer "input" - це ім'я селектора тегів
dave4jr

requiredє булевим атрибутом і його слід коли-небудь опускати (для "false") або мати таке ж значення, як його ім'я (тобто "required") для "true". Насправді краще використовувати .prop().
Альнітак

@Alnitak Якщо ви не працюєте над створенням сайту, сумісного з IE, prop()він не працює там, як це робиться в сучасних браузерах. Ще найкраще використовувати $(ele).attr("required", true)та falseвидаляти.
Олівер Хьюард

29

Я виявив, що такі реалізації є ефективними:

$('#freeform_first_name').removeAttr('required');

$('#freeform_first_name').attr('required', 'required');

Ці команди (attr, removeAttr, prop) поводяться по-різному в залежності від версії JQuery, яку ви використовуєте. Зверніться до документації тут: https://api.jquery.com/attr/


6

Використання .attrметоду

.attr(attribute,value); // syntax

.attr("required", true);
// required="required"

.attr("required", false);
// 

Використання .prop

.prop(property,value) // syntax

.prop("required", true);
// required=""

.prop("required", false);
//

Детальніше читайте тут

https://stackoverflow.com/a/5876747/5413283


4

Я виявив, що jquery 1.11.1 не робить це надійно.

Я використав $('#estimate').attr('required', true)і $('#estimate').removeAttr('required').

Видалення requiredне було надійним. Іноді requiredатрибут не має значення. Оскільки requiredбраузерний аттибут, то його наявність лише без значення розглядає браузер як true.

Цей клоп був переривчастим, і я втомився з ним возитися. Переключився на document.getElementById("estimate").required = trueта document.getElementById("estimate").required = false.


removeAttrне працює для мене. Тоді я використовую ваше рішення і чудово працює. Дякую!
Дієго Сомар

4

Не слід додавати істину з подвійною цитатою, "" вона повинна бути такою

$(document).ready(function() {            
   $('input').attr('required', true);   
});

Також ви можете використовувати опору

jQuery(document).ready(function() {            
   $('input').prop('required', true);   
}); 

Замість справжнього ви можете спробувати. Як от

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