Объединение двух простых условий jquery

#php #jquery #forms

#php #jquery #формы

Вопрос:

Я создал форму php, в которой я хотел бы отобразить загрузочный gif-файл, если будут выполнены определенные условия. Вот читаемый псевдокод / пример логики, которую мне нужно использовать в jquery.

 if (file_input_is_set amp;amp; submit_button_is_clicked) {
   <div class="progress-bar">tada...loading_gif</div> 
  }
  

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

 jQuery().on('change', 'input[type="file"]', function(e) { 
  

Второй код показывает загружаемый gif-файл при нажатии кнопки отправки формы.

 jQuery("input[name='profile_submit']").click(function (e) {
  

Поскольку я почти ничего не знаю о jQuery, мне нужна помощь, чтобы объединить эти события. Простите меня, если моя терминология неверна. Вот что я пробовал, что не работает, он показывает загрузочный gif еще до того, как я нажму кнопку отправки. Итак, мне нужна функция, которая работает как оператор php amp;amp; , и я не знаю, как вы это делаете в jquery.

 jQuery().on('change', 'input[type="file"]', function(e) {
    jQuery("input[name='profile_submit']").click(function (e) {
    //jQuery('#submit-button').hide();
    jQuery('.progress-bar').fadeIn(1000);
    });
    });
  

Примечание: причина, по которой вы видите много jQuery в коде, связана с WordPress (в котором используется форма), поскольку ему нужно, чтобы он находился в режиме отсутствия конфликтов.


Перефразированный вопрос (с подсказкой от @webkit): Как мне также проверить, является ли file_input_is_set / действительным при запуске события отправки?

Комментарии:

1. Есть разница между проверкой условий и проверкой событий (изменить, щелкнуть ..) вы можете либо делегировать события одному обработчику, либо, когда триггеры события отправки также проверяют, действительны ли входные данные

Ответ №1:

Начните с последнего действия, формы отправки. затем проверьте наличие файла при вводе файла:

 jQuery("input[name='profile_submit']").click(function (e) {
      if( jQuery('input[type="file"]').val() != '' ){
        jQuery('.progress-bar').fadeIn(1000);
      }
});
  

Демонстрация JSFiddle: http://jsfiddle.net/nDNP5 /

Комментарии:

1. Это работает, ДА. Мне пришлось очистить кеш, чтобы увидеть изменения. Извините, я не понял этого раньше.

Ответ №2:

вы можете сделать это:

 jQuery("input[name='profile_submit']").click(function (e) {
    // check to see if file is valid
    if (jQuery('input[type="file"]').val() != "") {
        // load
        jQuery('.progress-bar').fadeIn(1000);
    }
});
  

Или это: (только когда файл выбран, вы активируете отправку btn)

 jQuery('input[type="file"]').on('change', function (e) {
    // check to see if file is valid
    if (jQuery('input[type="file"]').val() != "") {
        jQuery("input[name='profile_submit']").off().on('click', function () {
            jQuery('.progress-bar').fadeIn(1000);
        });
    } else {
        jQuery("input[name='profile_submit']").off()
    }
});