所以我有一个先行者。您有一个计划,并开始键入一个类,输入的下拉列表将显示您的计划中可用的类。但是,如果他们不在时间表中,我不希望用户能够提交它。现在你可以输入垃圾,即使它不在输入类型的下拉列表中,你仍然可以提交它。这是我的代码:
$.each(schedule.classes, function(value) {
if(value !== $('.optimizeScheduleClasses :input').val()){
$errorMessage.text('Your selection do not match the class(es) available in the current schedule!');
$errorMessage.show();
error = true;
return false;
}
});
然而,这只是给出错误,无论他们是否在计划中放入垃圾或实际课程。我也试过这个:
var schedule = schedule.content.get();
$.each(schedule.classes, function(index, value){
if(schedule.classes[index] !== value){
$errorMessage.text('Your selection does not match the class(es) in the current schedule!');
$errorMessage.show();
error = true;
return false;
} else {
error=false;
}
});
但这样可以让每个班级都被选中,甚至可以选择日程表以外的课程。有谁知道我做错了什么?
HTML:
<script id="ScheduleClassPopup" class="partial" type="text/html">
<div class="control-group optimizeScheduleClasses modal-body-row" data-index="{{rowNum}}">
答案 0 :(得分:0)
我认为你的代码不太正确:
if(schedule.classes[index] !== value)
根据each的文档,它们将始终相等。您应该将schedule.classes[index]
与$('.optimizeScheduleClasses :input').val()
进行比较,这与原始代码完全相同。
我认为在submit
内做一些事情会更好。如果某个地方有$("#form").submit(function(){});
,那么请尝试检查输入是否有效。一个简单的想法是使用全局变量(虽然不太好)来指示错误然后在提交函数内检查它。在您的示例中,您可以检查变量error
。
但我认为允许无效输入完全没问题。恕我直言,回复一条消息,告诉用户他/她的日程安排中没有这样的课程,这不是一个劣等选择。
对于原始代码,假设在另一个函数中,请尝试:
$.each(schedule.classes, function(index, value) {
if(value == $('.optimizeScheduleClasses :input').val()){
return true;
}
});
$errorMessage.text('Your selection do not match the class(es) available in the current schedule!');
$errorMessage.show();
error = true;
return false;