需要能够使用元素验证div(使用unobtrusive / jquery验证插件)而无需在视图上查看任何表单的方法

时间:2014-05-26 13:21:48

标签: jquery asp.net-mvc-3 jquery-validate unobtrusive-validation

我最近被分配到一个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);
});


1 个答案:

答案 0 :(得分:4)

引用OP:

  

&#34;需要能够使用元素验证div(使用不显眼/ jquery验证插件),而无需任何形式在视图上

  

&#34; 我是否可以在没有div的情况下验证视图或部分视图(仅form)?如果是,即使使用变通办法也是如此,那怎么样?&#34;

否。绝对不是。

为什么呢?因为the jQuery Validate plugin设计用于<form></form>容器中的输入元素。如果<form>不存在,则无法初始化验证插件。

此外,AFAIK,如果没有jQuery Validation插件,则不能使用Unobtrusive Validation插件。

除非您使用jQuery Validate插件以外的其他内容,否则没有变通方法。

另见:https://stackoverflow.com/a/15231887/594235