Javascript 弹出窗口-如果用户输入了错误的输入,我如何使其在提交时出错

Javascript 弹出窗口-如果用户输入了错误的输入,我如何使其在提交时出错,javascript,jquery,html,forms,typeahead,Javascript,Jquery,Html,Forms,Typeahead,我的页面上有一个弹出窗口,上面有一个提前输入。现在您可以键入垃圾并单击submit,它将允许您。我正在尝试编写一段代码,如果您键入了typeahead选项中未包含的内容,则弹出窗口将抛出一个错误,并且在您修复之前,弹出窗口将不允许您提交该内容。这是我的代码,它是用来制定一个学校时间表的,在“提前打印”下拉列表中有班级 var schedule = schedule.content.get(); var validClasses = Fp.filter(schedule.classes, func

我的页面上有一个弹出窗口,上面有一个提前输入。现在您可以键入垃圾并单击submit,它将允许您。我正在尝试编写一段代码,如果您键入了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();
        });

我在GoogleDeveloper控制台中检查了InputClass的输出,它输出类和一个prevObject。我只需要类…

让javascript返回True或false,如果弹出窗口出现,则返回false或True


例如,如果它进入if-return-false-other-wise-true。

由于您修改了代码,我想您可能想尝试以下方法:

此外,如果StopperPogation不能产生预期效果,您可能希望按照此思路进行操作:

$("#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();
  }
});

至少我通常是这样解决这些问题的。希望有帮助。

明白了。我犯的错误是抛出了一个错误

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;
  }
 });

这里你可以看到,既然你在做验证,我还建议你看看“jquery验证”。这是一个插件,它简化了整个验证过程,还接受设置要执行验证的事件(如您所指出的,在您的案例中提交)。@alokverma,我不确定您发布的问题链接对我有何帮助。@AndreasMüller,我们公司不允许在这段代码中使用该插件。我认为这是一个简单的解决办法,我就是想不出来。我更新了我的OP,请查看我发现了什么。在事件回调中返回false。onclick或onsubmit@user327467,我不知道你在这里的意思。我已经为我的按钮添加了代码,以便在我的OppeThisHelp中进行澄清。。。。。你在浏览器中调试过js吗?它是否显示错误。。。。我只是说,在“if block”中,你有条件并显示弹出窗口,在关闭该块之前,只需返回false,在js函数的末尾返回true……这意味着如果弹出窗口显示它将返回false,它将不会被提交,否则它将被提交。