我正在使用jquery-steps plugin。现在我试图检查文件扩展名是否为.jpg。一切正常,除了文件类型检查。它接受了一切但不应该
$("#passportForm").steps({
headerTag: "h1",
bodyTag: "fieldset",
enableFinishButton: false,
transitionEffect: "fade",
stepsOrientation: "vertical",
onStepChanging: function (event, currentIndex, newIndex) {
// Always allow going backward even if the current step contains invalid fields!
if (currentIndex > newIndex) {
return true;
}
var form = $(this);
// Clean up if user went backward before
if (currentIndex < newIndex) {
// To remove error styles
$(".body:eq(" + newIndex + ") label.error", form).remove();
$(".body:eq(" + newIndex + ") .error", form).removeClass("error");
}
// Disable validation on fields that are disabled or hidden.
form.validate({
rules: {field: {required: true,extension: "jpeg|jpg"}}***,
errorPlacement: function (error, element) { }
}).settings.ignore = ":disabled,:hidden";
// Start validation; Prevent going forward if false
return form.valid();
},
onStepChanged: function (event, currentIndex, priorIndex) {
},
onFinishing: function (event, currentIndex) {
var form = $(this);
// Disable validation on fields that are disabled.
// At this point it's recommended to do an overall check (mean ignoring only disabled fields)
form.validate({ errorPlacement: function (error, element) { } }).settings.ignore = ":disabled";
// Start validation; Prevent form submission if false
return form.valid();
},
onFinished: function (event, currentIndex) {
var form = $(this);
form.submit();
}
});
我还需要检查文件大小。它必须小于3mb。第三个问题是当我们点击快速下一步按钮时,它会转到下一步而不验证
答案 0 :(得分:2)
你的方法(使用jQuery Validate插件)是完全有缺陷的......
$("#passportForm").steps({
....
onStepChanging: function (event, currentIndex, newIndex) {
....
var form = $(this);
....
// Disable validation on fields that are disabled or hidden.
form.validate({
rules: {field: {required: true,extension: "jpeg|jpg"}}***,
errorPlacement: function (error, element) { }
}).settings.ignore = ":disabled,:hidden";
// Start validation; Prevent going forward if false
return form.valid();
},
....
onFinishing: function (event, currentIndex) {
var form = $(this);
// Disable validation on fields that are disabled.
// At this point it's recommended to do an overall check (mean ignoring only disabled fields)
form.validate({ errorPlacement: function (error, element) { } }).settings.ignore = ":disabled";
// Start validation; Prevent form submission if false
return form.valid();
},
....
});
您无法随时使用一组新选项致电.validate()
。
根据您的代码评论,您似乎可能会认为您致电validate()
以按需触发验证......这不是它的工作方式。
.validate()
方法仅用于在页面加载时一次初始化表单上的插件。调用(并初始化)后,将忽略对.validate()
方法的任何后续调用。
如果您的表单已使用.validate()
初始化,则可以随时调用.valid()
方法触发验证测试。
如果您需要“开始/停止”或切换验证,则不能。但是,您可以使用.rules()
方法模拟类似的内容。您可以在所有.rules('remove')
元素上调用input
以删除所有验证规则,从而有效地删除任何验证检查。然后,您可以在任何.rules('add', { /* your rules */ })
元素上调用input
以将规则重新放回原位,从而有效地再次进行验证。
尽管允许添加/删除规则,但在您通过.validate()
调用初始化后,您绝对无法添加/删除/更改任何设置或选项。