Ограничить отправку формы, если размер файла больше ненавязчивой проверки

0

Я должен применить проверку размера файла uplaod

<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 МБ, любая помощь будет полезна.

Теги:
asp.net-mvc
unobtrusive-validation

3 ответа

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');
        }
    }
});
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>
0

Попробуй это:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню