jquery窗体向导验证
问题描述:
我试图用jQuery窗体向导(http://www.jankoatwarpspeed.com/post/2009/09/28/webform-wizard-jquery.aspx)实现验证脚本(bassistance),但我遇到了一些问题。jquery窗体向导验证
在jquery向导的页面上,一个名为“Tommy”的人想出了一段代码来实现代码的分类。但由于某种原因,我无法让它工作。它出现说如果该领域需要填写等,下一个按钮不起作用 - 这是很好,但如果我填写所有领域,下一个按钮仍然无法正常工作..
function createNextButton(i) {
var stepName = "step" + i;
$("#" + stepName + "commands").append("<a href='#' id='" + stepName + "Next' class='next'>Next ></a>");
/* VALIDATION */
if (options.validationEnabled) {
var stepIsValid = true;
$("#" + stepName + " :input").each(function(index) {
stepIsValid = !element.validate().element($(this)) && stepIsValid;
});
if (!stepIsValid) {
return false;
}
}
/* END VALIDATION */
$("#" + stepName + "Next").bind("click", function(e) {
$("#" + stepName).hide();
$("#step" + (i + 1)).show();
if (i + 2 == count)
$(submmitButtonName).show();
selectStep(i + 1);
});
}
有人可以帮我把这个弄清楚吗? :)
答
行,所以我加了验证点击事件,我想通了,“element.validate()元($(本))& & stepIsValid”实际存在的。如果其他人利用这一点,并具有同样的问题,解决办法是:
/* VALIDATION */
if (options.validationEnabled) {
var stepIsValid = true;
$("#"+stepName+" :input").each(function(index) {
checkMe = element.validate().element($(this));
//stepIsValid = !element.validate().element($(this)) && stepIsValid;
stepIsValid = checkMe && stepIsValid;
});
//alert("stepIsValid === "+stepIsValid);
if (!stepIsValid) {
return false;
};
};
/* END VALIDATION */
答
尝试增加验证到点击事件
function createNextButton(i) {
var stepName = "step" + i;
$("#" + stepName + "commands").append("<a href='#' id='" + stepName + "Next' class='next'>Next ></a>");
$("#" + stepName + "Next").bind("click", function(e) {
/* VALIDATION */
if (options.validationEnabled) {
var stepIsValid = true;
$(this).closest("fieldset").find(":input").each(function(index) {
stepIsValid = element.validate().element($(this)) && stepIsValid;
});
if (!stepIsValid) {
return false;
}
}
/* END VALIDATION */
$("#" + stepName).hide();
$("#step" + (i + 1)).show();
if (i + 2 == count)
$(submmitButtonName).show();
selectStep(i + 1);
});
}
更新
或者......尝试删除从默认勾选接收简报?复选框(默认未选中)。 单击事件不会连接到下一个按钮,因为复选框是必需的并且已被选中,所以stepIsValid
为false,并且在绑定click事件之前,createNextButton返回false。
呐,它也不工作。我首先得到$(this).closest的错误,所以我将它改回原来的验证代码,它显示了当你下一次点击时需要什么字段,但是一旦你填充字段并再次点击,它不会什么都不做 – SoulieBaby 2010-01-12 22:00:25