Javascript 使用敲除JS和文件API进行输入文件验证

Javascript 使用敲除JS和文件API进行输入文件验证,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我不熟悉knockout js,并尝试使用knockout js和文件API为客户端的文件输入编写自定义验证。主要目的是验证文件扩展名和文件大小,并在出现验证错误时清除文件输入路径 下面是使用纯javascript完成的代码。如果有人能帮忙,我将不胜感激 函数FileAPIViewModel(){ var self=这个; } 应用绑定(新文件apiViewModel()); $('#i_文件')。更改(函数(){ //检查浏览器是否完全支持所有文件API if(window.File&&wi

我不熟悉knockout js,并尝试使用knockout js和文件API为客户端的文件输入编写自定义验证。主要目的是验证文件扩展名和文件大小,并在出现验证错误时清除文件输入路径

下面是使用纯javascript完成的代码。如果有人能帮忙,我将不胜感激

函数FileAPIViewModel(){
var self=这个;
}
应用绑定(新文件apiViewModel());
$('#i_文件')。更改(函数(){
//检查浏览器是否完全支持所有文件API
if(window.File&&window.FileReader&&window.FileList&&window.Blob)
{
//从文件输入字段获取文件大小和文件类型
var fsize=$('i#u文件')[0]。文件[0]。大小;
var ftype=$('i#u文件')[0]。文件[0]。类型;
如果(fsize>10)
{
警报(fsize+“咬得太大了!”);
$('i#u file').val('');
}
开关(ftype)
{
案例“image/png”:
案例“image/gif”:
打破
违约:
警报(“不支持的文件!”);
$('i#u file').val('');
}
}否则{
警告(“请升级您的浏览器,因为您当前的浏览器缺少我们需要的一些新功能!”);
}
});

您可以尝试为此创建自定义jquery验证程序

$.validator.addMethod("filesize", function (value, element, params) {

//20000000

var ext = value.substr(value.length - 4);

//If  there is no file
if (value === "") {
    return false;
}
//check extension
if (ext !== null) {
    if (ext !== ".pdf") {
        return false;
    }
}
//check file size
if(element.files[0] != null){
    if (element.files[0].size > 20000000) {
        return false;
    }
}   
return true;

}, 'Must Upload A Valid PDF Under 20MB');
然后将规则添加到我认为是I_文件的输入中

$('[id^="i_file"]').each(function () {

    $(this).rules('add', {

        filesize: true

    });
});

通过简单的
更改事件
以ko方式实现困难。试试这样的。让我们know@supercool谢谢你的反馈。但是我尝试使用knockout.validation插件(自定义验证规则)来实现此验证,它是可重用的,错误消息被解析为ValidationMessage属性,而不是简单的警报框。确定您是否有多个输入类型
文件
控件?在您试图对其应用验证的页面上those@supercool我现在处理的情况是每次上传最多一个文件。好吧,你可以检查一下,这对一个文件有效,但对多个文件无效。如果您想显示不同的验证消息,您可以使用创建多个验证程序,即链接类型。