1 回答
TA贡献1757条经验 获得超7个赞
我不知道您的系统如何替换<field-yield>标签,但我想会有典型的表单字段。所以你需要编写一些通用的验证函数,它会一步一步验证所有字段,如果验证通过,则允许用户继续下一步。
在步骤中验证所有输入字段的函数:
function validateStep(step) {
var stepWrapper = $('fieldset#step'+step);
var emptyFields = 0;
$('input[type="text"], select, textarea', stepWrapper).each(function(i, el) {
if ($(el).val() == '') {
emptyFields++;
return false;
}
});
//check radio buttons
var radioGroups = {};
//group radio buttons by name
$(':radio', stepWrapper).each(function() {
radioGroups[this.name] = true;
});
//count "checked" radio buttons in groups
for (var radioName in radioGroups) {
var checked = !!$(':radio[name="'+radioName+'"]:checked', stepWrapper).length;
if (!checked) {
emptyFields++;
}
}
return emptyFields;
}
现在您有了步骤验证,您唯一需要做的就是在步骤更改之前调用此函数:
$("#next").click(function () {
//validate before move
if (validateStep(currentPage)) {
alert("Please fill all fields before move to next step!");
return false;
}
if (currentPage < maxPage) {
var nextPage = currentPage + 1;
} else {
return; //if already at max page
}
//... rest of your code
}
希望这对你有帮助。
更新: 这是您的页面表单的一个工作示例:https : //codepen.io/zur4ik/pen/LYYqjgM 我在每个循环中都有一个错误。
添加回答
举报
