弹出窗口 - 如果用户输入了错误的输入,我怎样才能在提交时将其输入错误

时间:2014-03-20 12:57:12

标签: javascript jquery html forms 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();
        });

我在Google开发者控制台中检查了inputClasses的输出,它输出了类和一个prevObject。我只需要上课......

3 个答案:

答案 0 :(得分:0)

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

例如,如果它进入if if return false,那么其他方面就是真的。

答案 1 :(得分:0)

因为你修改了你的代码我想你可能想要尝试这个:

http://api.jquery.com/event.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();
  }
});

至少我是如何解决这些问题的。我希望它有所帮助。

答案 2 :(得分: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;
  }
 });