別の JavaScript 関数内でカスタム jquery バリデーターを呼び出す
<input type='file' />
通常の JavaScript 関数内で onChange イベントの jQuery カスタム バリデーターを呼び出す方法。イベントをキャプチャし、既に登録されているカスタム バリデータをトリガーする必要があります。その内部には、アップロードしようとした各ファイルに対応する行を含むテーブルが作成されます。この記事を読みましたが、著者が言っていることを検証できません: Version of Custom Validator Calling
前もって感謝します。
サーバーにアップロードするときに、有効なファイル拡張子(現在は画像が主なターゲットです)をチェックします。
$(document).ready(function () {
$('#UploadedFile').live('change', function () {
//TODO
alert('Hey hey!');//It works, because the event is captured and calls this line
return jQuery.validator.methods.extensions.call(null, $(this), null);//Doesn't work for me
//This is for running validation in the client-side
});
});
jQuery.validator.addMethod("extensions", function (value, element, params) {
var extensionsAllowed = params.extensions;
var pattern = new RegExp(extensionsAllowed);
var elementToValidate = $(element);
var maxUploadSize = Math.floor(5000000 / 1024) / 1024;//converting to Kilobytes
var result = fnCreateUploadDetailsTable(elementToValidate, pattern, maxUploadSize);
return result;
//It works for server-side Data Annotations validator,
//but the request travels over the HTTP connection and I want to avoid overloading the server
//with this basic function
});
jQuery.validator.unobtrusive.adapters.add("extensions", ["extensions"], function (options) {
options.rules["extensions"] = options.params;
options.messages["extensions"] = options.message;
});