Javascript 输入验证与在多页表单上提交所需的验证
我有一个多页表单,我正在尝试使用jquery验证来验证它。用户基本上有4个选项:next、prev、save和submit save、next和prev都将当前页面作为一个整体保存到表单中;submit与save相同,但会启动一些与工作流相关的附加功能,然后转到站点的另一部分 我需要随时验证用户输入。jquery验证工作得很好。但是我需要根据需要设置一些字段。因为表单在每个步骤都会保存,所以输入必须始终有效,但我不需要进行必要的验证,直到提交的最后一步 表单正在构建一个特定于其所在页面的验证动态列表,如:Javascript 输入验证与在多页表单上提交所需的验证,javascript,jquery,asp.net,jquery-validate,Javascript,Jquery,Asp.net,Jquery Validate,我有一个多页表单,我正在尝试使用jquery验证来验证它。用户基本上有4个选项:next、prev、save和submit save、next和prev都将当前页面作为一个整体保存到表单中;submit与save相同,但会启动一些与工作流相关的附加功能,然后转到站点的另一部分 我需要随时验证用户输入。jquery验证工作得很好。但是我需要根据需要设置一些字段。因为表单在每个步骤都会保存,所以输入必须始终有效,但我不需要进行必要的验证,直到提交的最后一步 表单正在构建一个特定于其所在页面的验证动态
$(document).ready(function() {
$("#ctl01").validate({ onsubmit: false });
$("#_Qn_0e868ebe").rules("add", { maxlength: 200 });
$("#_Qn_d69e75a4").rules("add", { number: true });
$("#_Qn_adffbdec").rules("add", { maxlength: 200 });
$("#_Qn_adffbdec").rules("add", { digits: true });
});
现在,对于必填字段,我已经向它们添加了一个.isrequired类,并且我已经解耦了s以触发此客户端脚本:
function FormIsValid(sender, ishardsubmit) {
var form = $("#ctl01");
form.validate();
if (form.valid()) {
//if (ishardsubmit) {
// if (!IsRequiredValid()) { return false; }
//}
__doPostBack(sender, '');
}
return;
}
到目前为止,输入验证部分工作得非常好。我注释掉的部分是工作不太好的部分。它启动这个函数,在这个函数中,我试图动态添加所需的验证器并重新评估表单。我可以看到它在每个必填字段的.each循环中运行,但它似乎不起作用,因为它返回true,即使必填字段为空
function IsRequiredValid() {
var $requiredgroup = $(".isrequired");
$requiredgroup.each(function (i, item) {
$(item).rules("add", { required: true });
});
form.validate();
return form.valid();
}
我曾经考虑过在做这部分的时候加入.net必需的字段验证器,但是如果可能的话,我想坚持使用单一的解决方案。尤其是因为这感觉非常接近工作
想法?帮助谢谢 在必填字段中添加一个名为:SubmitRequired的类 实现以下两个功能:
function SaveClick(){
//ignore SubmitRequired on save (and any disabled fields)
$("form").validate({ ignore: ".SubmitRequired, [disabled]" });
if $("form").valid()
{
do something;
}
}
function SubmitClick(){
//ignore only disabled fields (if any))
$("form").validate({ ignore: "[disabled]" });
if $("form").valid()
{
do something;
}
}
您的jQuery。每个方法的构造都不正确
您希望在迭代中以整个对象为目标,而不是键/值对。因此,从函数参数中删除i,item并使用$this作为目标选择器
function IsRequiredValid() {
var $requiredgroup = $(".isrequired");
$requiredgroup.each(function() {
$(this).rules("add", { required: true });
});
// form.validate(); // remove this line -> 100% superfluous
return form.valid();
}
关于两个函数中的form.validate行:您不能在页面上调用.validate多次。它只能被调用一次来初始化表单上的插件
以后再叫它不会有任何效果。否则,我们就不需要使用.rules方法,只要在需要更改规则时调用.validate即可。然而,情况绝对不是这样。很好,我错过了忽略。然而,这是否也会对一个字段禁用类型|格式验证,例如,必填字段和必输字段?@will |,这个答案不起作用。您不能只调用。请在任何时候更改选项时进行验证。.validate方法只能调用一次以初始化插件,并且任何后续调用都将被忽略。是!我必须在中添加另一个函数来取消设置所需的,以防在修复输入后决定保存或更改页面而不是提交:$this.rulesreleve,required;工作很好,谢谢!