Это не работает:
$("#elementId").attr("required", "true");
В Chrome и Firefox DOM создает либо required
как атрибут (без значения), либо required=""
(пустое значение).
И не имеет значения, что значение в этом примере является "true". Если вы попытаетесь "asdf", произойдет одно и то же.
Что странно, я полагаю, что это работало, потому что этот новый код является частью большого проекта, который продолжается уже несколько лет.
Единственное, о чем я могу думать, это то, что мои Chrome (v10) и Firefox (v4) теперь достаточно продвинуты, что они распознают required как зарезервированное ключевое слово HTML5. Я добавил атрибут novalidate, считая, что это может отключить любую HTML5-версию, связанную с формами. Нет такой удачи.
Мысли?
Edit:
Чтобы прояснить это, это происходит только с JQuery. Если я говорю это, он работает:
$("#elementId")[0].setAttribute("required", "true");
Есть ли ошибка в JQuery? Любая идея, почему это происходит только с JQuery? Наша команда разработчиков любит, когда это возможно, весь код, через JQuery. Я могу использовать прямой метод setAttribute JavaScript, но скорее использовал бы JQuery-решение, которое работает.
Изменить 2:
Суть дела в том, что...
Почему использование метода JQuery attr()
не работает, когда используется обычный метод setAttribute()
? Разве метод attr()
вызывает setAttribute()
в какой-то момент ниже?
Вот что так запутано. Chrome и Firefox прекрасно настраиваются required="true"
, если вы используете setAttribute().