我最近被分配到一个MVC3项目,我需要在其所有页面上添加客户端验证。
不幸的是,这个项目有很多页面,在给定视图的整个页面层次结构中没有任何形式(从布局到最深的局部视图),虽然我知道它的错误和jquery验证所以不引人注意的都需要字段来验证保存在表格中,但是我的双手都在这里,因为这个项目正在运行项目,因为自去年2年以来现在进入验证支持部分,所以没有高级技术利益相关者(管理人员和建筑师现在已经准备好向缺少它的所有页面添加表格了,所以这里有一个问题: 我可以在没有表单的情况下验证视图或其中的一部分(只是一个div)吗?如果是,即使有解决方法,那又如何?。请分享你的想法。
我对此事的搜索详情:
我在SO中搜索了相当不错的时间,发现很少有链接有建议说可以做到,一个这样的链接是:
jQuery validation without "form" tag
基于我可以看到的所有建议,所有来自SO,我创造了2个小提琴:
一个有形式 - http://jsfiddle.net/here4fiddle/r2w2u/4/(验证并可以看到错误)
没有它的其他。 http://jsfiddle.net/here4fiddle/r2w2u/5/
这里有第二个小提琴,有3个方法(1.1和1.2几乎相同,2个),但是没有那些在未启动和运行时,将显示验证失败,所有人都说验证通过(isValid = true)虽然输入字段为空白(注意在第二个小提琴中,页面上没有表格,因为我想要没有表单场景的解决方案)。
请更正第二小提琴中的任何方法(如果它可以更改),否则如果有其他可能有效的建议,请分享。
第二小提琴的代码:
html:
显示错误
javacsript:
function validate(e){
var isValid = true;
var $divToCheck = $("#divToCheck");
//======================================
//aproach-1.1
/*
var abc = $("<form>").append($divToCheck).validate();
alert(abc);
alert(abc.valid());
alert(abc.errorList.length);
*/
//======================================
//approach-1.2 - start
isValid = $("<form>").append($divToCheck).valid();
alert(isValid);
//approach-1.2 - end
//======================================
//approach 2 - start
/*
jQuery('#divToCheck').wrap('<form id="temp_form_id" />');
isValid = jQuery('#temp_form_id').valid();
jQuery('#divToCheck').unwrap();
if (isValid) {
alert('no errors');
}
else{
alert('error');
}
*/
//approach 2 - end
//======================================
}
$(document).ready(function () {
$("#validate").click(validate);
});
答案 0 :(得分:4)
引用OP:
&#34;需要能够使用元素验证div(使用不显眼/ jquery验证插件),而无需任何形式在视图上34>
和
&#34; 我是否可以在没有
div
的情况下验证视图或部分视图(仅form
)?如果是,即使使用变通办法也是如此,那怎么样?&#34;
否。绝对不是。
为什么呢?因为the jQuery Validate plugin设计用于<form></form>
容器中的输入元素。如果<form>
不存在,则无法初始化验证插件。
此外,AFAIK,如果没有jQuery Validation插件,则不能使用Unobtrusive Validation插件。
除非您使用jQuery Validate插件以外的其他内容,否则没有变通方法。