我的页面上有一个弹出窗口,上面有一个预输入输入。现在你可以输入垃圾并点击提交,它就可以让你。我尝试编写会在弹出窗口中输入错误的代码,如果您输入的内容不包含在预先输入选项中,并且在您修复之前它不会让您提交。这是我的代码,它用于制作学校日程表,其中包含类型输入下拉列表。
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。我只需要上课......
答案 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;
}
});