是的,这可能是一百万个类似问题的重复,但对我来说它仍然不起作用。根据 jQuery 验证文档,只需将第一个默认项设置为空值 (value=""),并且使用“required”类就足够了。但它拒绝正常工作。我已经正确设置了一切,它在复选框、单选按钮、文本输入上都可以正常工作,但选择列表?没有。
这是一个简单的例子:
<select class="required" id="dayDropdown" data-bind="'value': StudentBaseData.day">
<option value="">Dag</option>
</select>
<select class="required" id="monthDropdown" data-bind="'value': StudentBaseData.month">
<option value="">Måned</option>
</select>
<select class="required" id="yearDropdown" data-bind="'value': StudentBaseData.year">
<option value="">År</option>
</select>
三个下拉列表,都是必需的。就在这里,奇怪的是只有第一个选择验证。其他两个被忽略。在页面下方,我还有两个拒绝任何验证的选择列表。
这是我启动验证插件的地方:
$(function(){
$.metadata.setType("attr", "validate");
$("#StudentsForm").validate({
ignore: ""
});
});
我在提交表单时强制触发验证:
$('#updateProfileButton').click(function subscribe() {
if($("#StudentsForm").valid()=== true){ //force trigger validation
// do stuff
} else { // if jquery validation fails
// TODO
}
});
就像我说的,它适用于除选择列表之外的所有内容。
如果重要的话,选择列表会由两个 javascript 函数(填写日期等)自动填充,但初始默认值的设置就像我上面显示的那样。奇怪的是它适用于第一个选择框,就是这样。
我已经搜索和搜索了,我从来没有发现任何人有同样的问题。
PS:“数据绑定”来自 knockout.js。