1

我有一个基于 asp.net MVC 并使用 twitters 引导程序的应用程序。为了让引导样式起作用,我添加了:

$.validator.setDefaults({
    highlight: function (element) {
        $(element).closest(".control-group").addClass("error");
    },
    unhighlight: function (element) {
        $(element).closest(".control-group").removeClass("error");
    }
});

到目前为止,一切都很好。今天,我在站点上添加了一个 cleditor,但由于 cleditor 隐藏了它(所有所见即所得的编辑器也是如此),因此在 textarea 上丢失了验证。所以我添加了以下代码来解决这个问题。

$.validator.setDefaults({ ignore: '' });

然后我添加了一个函数,它在验证之前对 textarea 做一些工作。这是一个必填字段,所以我正在测试它是否只包含空格、非中断空格和中断。如果是这样,我将其清除,以便我的验证正确捕获它。

$('#myForm').submit(function () {
    var contents = editor[0].$area[0].value;
    var patt1 = new RegExp('^((<br>)*(\s)*(&nbsp;)*)*$');
    if (contents.match(patt1))
        editor[0].$area[0].value = '';
    return true;
});

这个功能在验证之前触发,表单提交停止,错误信息显示出来,这一切都很好。问题是上面设置的验证器默认值不会被触发,因此这些字段的样式不合适。

更奇怪的是,如果我第二次提交表单,验证器默认值就会运行,并且字段的样式会适当。

我可以通过在 MVC 中创建自定义验证属性来解决此问题,但我仍然想知道为什么会这样,以及是否可以修复它。

作为旁注,我在上面使用的正则表达式来查找空格和中断等的组合不起作用。我已经把它放在两个正则表达式测试器中,它工作正常。在我的应用程序中,它找不到匹配项。我是一个正则表达式新手,所以可能有更好的方法来编写它。

4

1 回答 1

0

尝试在规则正上方的行中添加忽略:''。一个空字符串为我完成了这项工作。

于 2013-08-29T00:21:32.577 回答