【问题标题】:jQuery Validation Plugin custom method always return invalid [duplicate]jQuery Validation Plugin 自定义方法总是返回无效 [重复]
【发布时间】:2016-10-22 12:35:11
【问题描述】:

请帮助找出我的 jquery 验证问题。我正在使用 jQuery Validation plugin 来验证我的表单。我添加了一个自定义规则来检查图像的尺寸(尝试上传图像)。这是自定义方法的代码

$.validator.addMethod('checkDim', function (value, element, param) {     
    var image = new Image();
    var file = element.files[0];
    var _URL = window.URL || window.webkitURL;
    image.src = _URL.createObjectURL(file);
    image.onload = function () {
        console.log("The image width is " + this.width + " and image height is " + this.height);
        if(this.width == param[0] && this.height == param[1]){ 
            return true;
        }
        else{            
            return false;
        }
    };  

}, 'Image dimension must be as specified');

我添加了如下规则

image: {required: true, accept: "image/*", checkDim: [1366,311]}

函数被正确调用,因为我可以在控制台中看到消息,并且维度也计算正确,但此函数总是返回无效。

请帮我弄清楚我做错了什么。

【问题讨论】:

  • 无效意味着返回false?
  • 请提供错误
  • 同时记录 param[0] 和 param[1] 以查看其中的内容以及返回 false 的原因。
  • Dhaval 参数已经是正确的控制台值。

标签: jquery jquery-validate


【解决方案1】:

您的元素参数将提供与您的元素相关的属性,即您的图像。您不需要 onload 事件或需要创建图像对象。

$.validator.addMethod('checkDim', function(value, element, param) {
        var width = $(element).width();
        var height = $(element).height();
        console.log("The image width is " + width + " and image height is " + height);
        if (width == param[0] && height == param[1]) {
            return true;
        } else {
            return false;
        }
    }, 'Image dimension must be as specified');

【讨论】:

  • Riyaj 不工作,显示未定义的宽度和高度
  • @Karan 请检查更新的。
  • @RIYAZ KHAN 似乎我没有正确解释。我正在尝试上传图片。你的方法是返回元素的高度和宽度,而不是我选择的图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 2018-01-23
  • 2011-05-21
  • 2018-03-25
相关资源
最近更新 更多