如果文件大小更加不引人注意,则限制表单提交

时间:2014-04-26 06:20:50

标签: javascript jquery asp.net-mvc unobtrusive-validation

我必须应用文件大小上传验证

<input type="file" name="UserModel.Resume" id="UserModel.Resume" class="fileSize" data-val="true" data-val-required="The CV field is required." />

我有一个文件大小检查功能,

$('.fileSize').bind('change', function () {
        var fileSize = this.files[0].size / 1024 / 1024;
        if (fileSize > 3) {
            $(this).addClass("input-validation-error");
        } else {
            $(this).removeClass("input-validation-error");
        }
    });

是否可以通过像

这样的功能进行验证
data-val-function="SomeFunction()" //Some function which return true if valid else false

如果文件大小超过3 MB,我想限制提交表单,任何类型的帮助都会有所帮助。

3 个答案:

答案 0 :(得分:0)

试试这个:

<input type="submit" onclick="e.perventDefault(); Validate()?this.forms.submit() : alert('Validation Error!')" />

答案 1 :(得分:0)

试试这个http://jsfiddle.net/lotusgodkk/GCu2D/37/

如果您的输入具有课程input-validation-error,则表单将不会提交。相反,它会抛出错误信息。

使用Javascript:

$(document).ready(function () {
$(document).on('click', '.submit', function () {
    var b = $(this);
    var form = b.parents('form:first');
    if (form.find('.input-validation-error').length) {
        alert('error somewhere');
        return false;
    } else {
        //your normal code
    }
   });
});

HTML:

<form method="post" action="temp">
    <input type="file" name="UserModel.Resume" id="UserModel.Resume" class="fileSize input-validation-error" data-val="true" data-val-required="The CV field is required." />
    <input type="submit" value="submit" class="submit" />
</form>

答案 2 :(得分:0)

鉴于您有验证功能的对象:

var validationFns = {
    'customValidator': function() {
        // do something
    },
    'customValidator2()': function() {
        // do something
    }
}

然后您可以在方法上添加数据属性,如:

data-val-function="customValidator"

data-val-function="customValidator2()"

并使用以下代码:

$('.fileSize').bind('change', function () {
    var $this = $(this);
    var validationFn = $this.attr('data-val-function');
    if (validationFn && $.isFunction(validationFns[validationFn])) {
        if (validationFns[validationFn]()) {
            $this.removeClass('input-validation-error');
        } else {
            $this.addClass('input-validation-error');
        }
    } else {
        var fileSize = this.files[0].size / 1024 / 1024;
        if (fileSize > 3) {
            $this.addClass('input-validation-error');
        } else {
            $this.removeClass('input-validation-error');
        }
    }
});