Вопрос

У меня есть несколько флажков. Если пользователь проверяет любой из них, я должен посмотреть, разрешено ли им делать это, если нет, сообщите им и снимите его. Тем не менее, это заставим меня в цикле, так как он снова запускает изменения! Как я могу заняться этим?

$('#step_1, #step_2, #step_3, #step_4').change(function(event) {
        if(!$('#section_2_active').attr('checked')){
            alert('You can not select output options when "Create Output" has not been selected.');

            $(this).attr('checked', false);

            $('#other_stages :checkbox:not(#section_2_active, #co_t)').change();
        }

});

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

Какие еще варианты у меня есть? Я могу приложить функцию звонка к каждому флажкому ящику, но я надеюсь на что-то немного более элегантное, если нет, я по умолчанию по умолчанию этому.

Спасибо всем за любую помощь

Это было полезно?

Решение

Ты можешь использовать .trigger() пройти дополнительный параметр вашему обработчику, мы будем использовать loop. Отказ Если это false, не запускайте другой триггер, как это:

$('#step_1, #step_2, #step_3, #step_4').change(function(event, loop) {
  if(!$('#section_2_active').attr('checked')){
    alert('You can not select output options when "Create Output" has not been selected.');
    $(this).attr('checked', false);
    if(loop !== false) 
      $('#other_stages :checkbox:not(#section_2_active, #co_t)').trigger('change', false);
  }
});

Другие советы

Самые простые изменения это что-то подобное:

var inClickHandler = false;

function OnChecked(evt) { 
  if (inClickHandler) {
    inClickHandler = false;
    return;
  }
  inClickHandler = true;

  // Do your stuff.
}

Почему вы называете эту линию? $('#other_stages :checkbox:not(#section_2_active, #co_t)').change(); Насколько я вижу, вам это не нужно, и это не будет петлей. Флажок все еще будет проверять, если вы не использовали event.preventDefault(); и то .attr('checked',false); Не будет срабатывать изменить, возможно, из-за проблем, которые у вас есть.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top