[英]On step changing check file size and file type Jquery-Steps
我正在使用jquery-steps插件 。 现在我试图检查文件扩展名是否为.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。 第三个问题是,当我们点击快速下一步按钮时,它会转到下一步而不进行验证
你的方法(使用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()
方法模拟类似的东西。 您可以在所有input
元素上调用.rules('remove')
以删除所有验证规则,从而有效地删除任何验证检查。 然后你可以在任何input
元素上调用.rules('add', { /* your rules */ })
来将规则放回原位,有效地允许再次验证。
尽管允许添加/删除规则,但是一旦通过调用.validate()
初始化,您绝对无法添加/删除/更改任何设置或选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.