Как сделать ввод HTML5 обязательным через JavaScript

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

(Если флажок Company-email отмечен -› поле ввода обязательно Электронная почта компании, иначе личная почта)

Изначально все поля должны быть required=false. Но это не работает. Независимо от того, какое значение я даю требуемому атрибуту, required всегда истинно.

Итак... как я могу изначально установить для поля ввода значение required=false?

РЕДАКТИРОВАТЬ:

Спасибо всем за ваши ответы.

На самом деле ничего не работает. Я сделал тестовый html-документ следующим образом:

function test2()
            {
                document.getElementById("33").attr("required");
            }
<form method="post" action="#">
    <input type="text" id="33">
    <input type="text">
    <input type="text">
    <input type="text">
    <input type="radio" onclick="test2()">
    <input type="submit" value="send">
</form>

Это невероятно, но этот очень простой пример не работает. Поле с идентификатором 33 не является обязательным. Я могу отправить форму, и ничего не проверяется. Что здесь не так?

РЕДАКТИРОВАТЬ 2:

Теперь я нашел решение:

function test2()
            {
                document.getElementById("33").required = true;
            }

Это работает для меня на моей странице примера. Я должен проверить, действительно ли я могу работать с этим в моем реальном проекте.


person user1895268    schedule 10.11.2014    source источник


Ответы (4)


Удалите атрибут required из ненужных полей.

В HTML5 это пример использования required:

<input type="text" name="name" required>

Так что есть вероятность, что даже при установке значения false (или вообще чего-либо) это будет считаться истинным.

person Shomz    schedule 10.11.2014

   $(document).ready(function() {
           $("#privateemail").attr("required");
             $("#companyemail").removeAttr("required");
    $('#checkbox1').change(function() {
        if($(this).is(":checked")) {
             $("#companyemail").attr("required");
             $("#privateemail").removeAttr("required");
        }
        else{
             $("#privateemail").attr("required");
             $("#companyemail").removeAttr("required");
          }

    });
});

Я надеюсь, что это может помочь, дайте мне знать ваши отзывы...

person Community    schedule 10.11.2014

попробуйте удалить необходимые атрибуты

your-input.removeAttr( "required" );
person Zakaria Wahabi    schedule 10.11.2014

required — это логический атрибут, поэтому независимо от того, какое значение вы ему присвоите, он все равно будет необходим.
Вместо установки атрибутов вы можете установить свойство элемента

document.getElementById('companyemail').required = false;
person Musa    schedule 10.11.2014