1

是的,这可能是一百万个类似问题的重复,但对我来说它仍然不起作用。根据 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。

4

1 回答 1

2

向下拉列表中添加name属性。这应该可以解决您只看到第一个下拉菜单显示为无效的问题。

于 2013-05-14T12:32:33.937 回答