繁体   English   中英

在步骤更改检查文件大小和文件类型Jquery-Steps

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM