Всплывающее окно - если пользователь вводит неверные данные, как я могу получить сообщение об ошибке при отправке

0

У меня есть всплывающее окно на моей странице, на котором есть ввод типа. Прямо сейчас вы можете ввести мусор и нажать "Отправить", и он позволяет вам. Я пытаюсь написать код, который будет вызывать ошибку во всплывающем окне, если вы введете что-то, что не включено в параметры typeahead, и оно не позволит вам отправить его, пока вы его не исправите. Вот мой код, он предназначен для составления школьного расписания, в котором есть классы в раскрывающемся списке typeahead.

var schedule = schedule.content.get();
var validClasses = Fp.filter(schedule.classes, function (class) { return !class.passed; }),
inputClasses = $('.optimizeViaClasses input.className').map(function () { return $(this).val(); }),
isErrorForValidClasses = Fp.all(inputClasses, function (inputClass) { return Fp.contains(validClasses, inputClass); });


if(validClasses !== inputClasses){
    $errorMessage.text('Your selection does not match the class(es) in the current schedule!');
    $errorMessage.show();
}

Прямо сейчас, если вы введете мусор в поле ввода, это вызовет ошибку, но все равно позволит пользователю отправить. Как я могу остановить пользователя от отправки до ввода правильного ввода?

Вот моя кнопка:

$submitBtn.on('click', function(event){
            if(inputParameters() !== false){
                $myPopUp= $modal.find('#myData').detach()[0];   
            }
            event.preventDefault();
        });

и я проверил вывод inputClasses в консоли разработчика Google, он выводит класс и prevObject. Мне просто нужен класс...

  • 0
    stackoverflow.com/questions/11216026/… Здесь вы можете увидеть.
  • 0
    так как вы делаете проверку, я бы также порекомендовал вам взглянуть на «jquery validate». Это плагин, который оптимизирует весь процесс проверки, а также принимает установку события для выполнения проверки (представьте в вашем случае, как вы указали).
Показать ещё 3 комментария
Теги:
forms
typeahead

3 ответа

0
Лучший ответ

понял. ошибка, с которой я столкнулся, - это ошибка.

var schedule = schedule.content.get(),
validClasses = Fp.filter(schedule.classes, function (class) { return !class.passed; }),
inputClasses = $('.optimizeViaClasses input.className').map(function () { return $(this).val(); }),               
actualValidClasses = Fp.pluck(validClasses, 'className');


$.each(inputClasses , function(index, value){
if($.inArray(value, actualValidClasses ) === -1){                          
    $errorMessage.text('Your selection does not match the class(es) in the current schedule!');
         $errorMessage.show();
          error = true;
          return false;
  }
 });
0

так как вы изменили свой код, я полагаю, вы можете попробовать это вместо этого:

http://api.jquery.com/event.stoppropagation/

также вы можете захотеть делать что-то в этом направлении, если stoppropagation не приводит к желаемому эффекту:

$("#formid").on("submit",function(e){
  // declare isValid outside of this and set it in your validation function or call it inside this and check for that.
  if(isValid) {
    e.stopPropagation();
  }
});

по крайней мере, так, как я обычно решал такие проблемы. Я надеюсь, что это помогает.

0

Пусть javascript возвращает либо True, либо false, и если всплывающее окно выходит, возвращает false другой мудрый true.

Например, если он попадает, если возвращает ложное другое мудрый истинный.

  • 0
    @ user327467, я не уверен, что ты имеешь в виду здесь. Я добавил код для моей кнопки, а также для пояснения к моему OP
  • 0
    Надеюсь, это поможет ..... Вы отлаживали JS в браузере? показывает ли это ошибку .... я просто говорил, что в "блоке", где у вас есть условие и показывает всплывающее окно, и перед закрытием этого блока просто вернуть false, а в конце функции js вернуть true ...... Это значит если всплывающее окно показывает, оно вернет false и не будет отправлено, в противном случае оно будет отправлено.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню