Заставьте плагин проверки Jquery работать на входах без атрибута name
Ну, мне потребовалось достаточно много времени, чтобы выяснить, что плагин проверки формы JQuery работает только с полями с атрибутом "name".
Во всяком случае, я использую это, чтобы сделать все поля обязательными.
Моя проблема в том, что в какой-то момент у меня есть один текстовый ввод
<div id='choices'>
<input type='text' />
</div>
<a href='#' id='add-choice' >Add input </a>
пользователь может добавить столько текстовых входов, сколько он хочет:
$("#add-choice").live("click",function(){
$("#choices").append("<input type='text' /><br>");
});
И я хочу, чтобы эти новые поля также были обязательными. Даже если я дам имя первому входу. Что я должен сделать для новых входов, добавляемых динамически?
Есть ли способ использовать плагин, не используя имя attr, или есть другое решение?
3 ответа
Что я должен сделать для новых входов, добавляемых динамически?
Дайте им имя, любое имя
Есть ли способ использовать плагин, не используя имя attr?
нет
Есть ли другое решение?
Это зависит от того, что вы делаете с полями - вам явно не нужно имя на них по любой другой причине, кроме как заставить jquery проверять работоспособность, так почему бы вам просто не придумать имя и не назвать их все это?
исправление - нужны уникальные имена, смотрите комментарии
var i = 0;
$("#add-choice").live("click",function(){
$("#choices").append("<input type='text' name='bob" + i + "' class='required'/><br>");
i = i + 1;
});
Да, вы можете сделать это, но с ограничениями
Ограничение: у вас не будет гибкости в изменении сообщений при использовании других правил.
<form ="validationForm">
<input type="text" class="required" title="required message" />
</form>
jQuery("#validationForm").validate();
Цитата ОП:
"Есть ли способ использовать плагин, не используя имя attr"
Нет, вы не можете использовать плагин jQuery Validate, если у вас нет name
атрибуты на всех ваших полях.
Рекомендации по разметке
Атрибут name '' обязателен '' 'для входных элементов, плагин проверки не работает без него.
"Обходной путь" - заставить jQuery создавать уникальное имя при создании нового ввода.