удалить обязательные из полей ввода, которые находятся в скрытых div

У меня есть одна форма и пара div с кучей полей ввода и одно поле выбора, которое показывает один div и скрывает все остальные. В этом поле ввода есть обязательный тег html5. Я хотел бы удалить обязательный тег из всех полей ввода, которые находятся в скрытых div. Как я могу это сделать? Вот мои js для отображения / скрытия div в зависимости от моих опций выбора:

    <script>
function changeGroup(e) {
    /*
        1 - Remove all group classes
        2 - Add the currently selected group class
    */
    $("#main")
        .removeClass(allGroups)
        .addClass($("option:selected", e.target).val())     
}

/* 
    1 - Bind changeGroup function to "change" event
    2 - Fetch all group from the select field 
*/
var allGroups = $("select")
    .change(changeGroup)
    .find("option")
        .map(function() {
            return $(this).val();
        })
        .get()
        .join(' ');


</script>

Спасибо за помощь ... Дорижан


person user899119    schedule 05.11.2013    source источник


Ответы (2)


Использовал бы метод prop(), поскольку required - это свойство. После того, как вы удалите свойство, если пользователь переключит так, чтобы объект снова стал видимым, у него нет текущего механизма для отслеживания того, где они были удалены.

По этой причине я предлагаю вам добавить класс required ко всем входам, имеющим свойство required.

$('.required').prop('required', function(){
   return  $(this).is(':visible');
});

Это будет перебирать весь класс required и настраивать свойство в зависимости от видимости.

person charlietfl    schedule 05.11.2013
comment
Есть гораздо лучшая функция для решения проблемы: fieldset: disabled. см. jsfiddle.net/trixta/K8EPm - person alexander farkas; 21.12.2013
comment
как fieldset: disabled заменяет любую функцию проверки: required? - person david tallon; 28.07.2015
comment
@davidtallon все, что находится в отключенном наборе полей, отключено ... отключенные элементы управления не отправляются, поэтому не могут быть необходимы - person charlietfl; 28.07.2015

Чтобы удалить атрибут 'required' из группы элементов или всех входных дочерних элементов div с помощью jQuery, вы можете попробовать следующее:

$("#hiddenDiv :input").prop('required',null);
person Aks    schedule 29.05.2014