使用 parsley.js 验证最大文件上传大小

2023-12-12

我在用着欧芹.js in a USP ProWordpress 中的表单。一般来说,验证是有效的,但现在我正在尝试验证最大文件大小,但我不太明白如何做到这一点。

我找到了这些指示,但无法使其发挥作用。

这是我的代码:

<input type="file" data-parsley-error-message="This field is required" required="required" placeholder="File(s)" name="usp-files[]" multiple="multiple" data-filemaxsize="1.5" maxlength="255" class="file-input usp-input usp-input-files usp-clone" id="usp-multiple-files" data-parsley-id="3077">


window.ParsleyConfig = {
    validators: {
        filemaxsize: function (val, max_megabytes, parsleyField) {
            if (!Modernizr.fileapi) { return true; }

            var $file_input = $(parsleyField.element);
            if ($file_input.is(':not(input[type="file"])')) {
                console.log("Validation on max file size only works on file input types");
                return true;
            }

            var max_bytes = max_megabytes * BYTES_PER_MEGABYTE, files = $file_input.get(0).files;

            if (files.length == 0) {
                // No file, so valid. (Required check should ensure file is selected)
                return true;
            }

            return files.length == 1 && files[0].size <= max_bytes;
        }
    },
    messages: {
        filemaxsize: "The file cannot be more than %s megabytes."
    }
};

window.Modernizr.addTest('fileapi', function() { return window.File && window.FileReader; });
window.BYTES_PER_MEGABYTE = 1048576;

jQuery(function($){
    $('.usp-form').parsley();
});

我尝试上传一张 19 MB 的图片,但没有任何反应。没有错误或任何东西,控制台中没有任何内容。

我缺少什么?


有几点说明:

  1. 该代码似乎来自 Parsley 1.* (查看文档),现已弃用。
  2. 尽管它看起来来自 Parsley 1.*,但该代码并未遵循自定义验证器的正确结构(看一个例子).
  3. 欧芹不包括input[type=file]默认情况下。为此,您的代码永远不会被执行。
  4. 自定义验证器应该通过绑定parsley-filemaxsize代替data-filemaxsize

我已经设法调整代码,解决方案如下。您还可以检查工作中的jsfiddle.

请注意:我花了一些时间尝试将此代码转换为 Parsley 2.* 。但是,我认为您不能使用 Parsley 2.*,因为自定义验证器仅接收值和要求,并且您需要 parsleyField.$ 元素来验证文件大小。

<form id="form">
    <input type="file" data-parsley-error-message="This field is required" required="required"
       placeholder="File(s)" name="usp-files[]" multiple="multiple" parsley-filemaxsize="1.5"
       maxlength="255" class="file-input usp-input usp-input-files usp-clone" id="usp-multiple-files" />
    <button type="submit">Submit</button>
</form>

<script>
$(document).ready(function() {
    $('#form').parsley({
        validators: {
            filemaxsize: function() {
                return {
                    validate: function (val, max_megabytes, parsleyField) {
                        if (!Modernizr.fileapi) { return true; }

                        var $file_input = $(parsleyField.element);
                        if ($file_input.is(':not(input[type="file"])')) {
                            console.log("Validation on max file size only works on file input types");
                            return true;
                        }

                        var max_bytes = max_megabytes * BYTES_PER_MEGABYTE, files = $file_input.get(0).files;

                        if (files.length == 0) {
                            // No file, so valid. (Required check should ensure file is selected)
                            return true;
                        }

                        return files.length == 1  && files[0].size <= max_bytes;
                    },
                    priority: 1
                };
            }
        },
        messages: {
            filemaxsize: "The file cannot be more than %s megabytes."
        }
        , excluded: 'input[type=hidden], :disabled'
    });

    /**
     * Extension to Modernizer for File API support
     */
    window.Modernizr.addTest('fileapi', function() { return window.File && window.FileReader; });

    window.BYTES_PER_MEGABYTE = 1048576;

    $('#form').on("submit", function(e) {
        e.preventDefault();
        $(this).parsley("validate");
    });
});
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 parsley.js 验证最大文件上传大小 的相关文章

  • JavaScript 中的埃拉托斯特尼筛法对大量数据无限运行

    我一直在尝试写埃拉托斯特尼筛法 http en wikipedia org wiki Sieve of EratosthenesJavaScript 中的算法 基本上我只是按照以下步骤操作 创建从 2 到 n 1 的连续整数列表 令第一个素
  • 在新的 Google 协作平台 <嵌入 HTML> 中使用 localStorage 和 IndexedDB 不起作用

    我正在尝试将新的 Google 协作平台用于我开发的网页 但是 我在存储本地数据时遇到了问题 本地文件在 Windows 和 Apple safari chrome 中运行良好 从 Google 协作平台尝试一下 没有什么乐趣 此外 在 s
  • 使用 JavaScript 禁用第三方 cookie

    我正在努力根据所有在欧盟运营的公司的数据保护规则实施新的 Cookie 政策合规性 根据该规则 用户在使用任何网站时必须能够拒绝 接受除必需的 Cookie 之外的所有内容 在我客户的网站中 我可以看到正在存储以下第三方 cookie ga
  • 摩卡 - Chai Karma“套件未定义”

    我对 jscript tdd 很陌生 遇到了问题 希望有人能告诉我我在做什么 在浏览器中运行测试 通过 HTML 文件 一切正常 通过节点和业力运行它们我得到以下异常 我想在 node js 主机的 karma 中使用 Mocha 和 Ch
  • 带有淘汰赛js的隐形recaptcha

    我正在完成隐形验证码 但我在实现它时遇到问题 谷歌开发人员页面中的代码显示它应该是这样的
  • 使用 dc.js 按条形值对条形图中的条形进行排序(排序)

    如何通过维度的计算值而不是维度本身的名称对 dc js 示例中的 x 轴 维度 进行排序 例如 请考虑序数条形图的 dc js 示例 https github com dc js dc js blob master web examples
  • Draggable JS Bootstrap 模式 - 性能问题

    对于工作中的项目 我们在 JavaScript 中使用 Bootstrap Modal 窗口 我们想让一些窗口可移动 但我们遇到了 JQuery 的性能问题 myModal draggable handle modal header Exa
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • 将 GMT 时间转换为当地时间

    我以这种格式从我的服务器获取 GMT 时间 Fri 18 Oct 2013 11 38 23 GMT 我的要求是使用Javascript将此时间转换为本地时间 例如 如果用户来自印度 首先我需要采用时区 5 30并将其添加到我的服务器时间并
  • 如何制作没有 ng-repeat 的模板并使用 Angular-drag-and-drop-lists 将数据传递到 $scope?

    我想用角度拖放列表 https github com marceljuenemann angular drag and drop lists使用我自己的网格模板到所见即所得编辑器 如何构建我自己的 HTML 模板而不需要ng repeat因
  • Javascript split 不是一个函数

    嘿朋友们 我正在使用 javascript sdk 通过 jQuery facebook 多朋友选择器在用户朋友墙上发布信息 但是我收到此错误friendId split 不是函数 这是我的代码 function recommendToFr
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • Javascript 假值(null、未定义、false、空字符串:“”或 '' 和 0)和比较(==)运算符 [重复]

    这个问题在这里已经有答案了 当我使用任何一个值时 null undefined false 0 in a if陈述 它总是被评估为谬误 false 另外 这些值的否定 null undefined false 0 in a if语句总是被评
  • 正则表达式 - 从 markdown 字符串中提取所有标题

    我在用灰质 https www npmjs com package gray matter 以便将文件系统中的 MD 文件解析为字符串 解析器产生的结果是这样的字符串 n Clean er ReactJS Code Conditional
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • 日期出现奇怪的错误,“未捕获非法访问”

    所以我试图找到最新的DateJavascript 可以处理 我把它减少到 9 月 275760 并增加了我开始捕获未捕获的天数illegal access例外new Date 09 24 275760 to new Date 10 13 2
  • 从 FileReader 设置背景图像样式

    我正在寻找一种解决方案 允许我从文件上传输入中获取文件并通过设置 document body style backgroundImage 来预览它 以下代码用于在 Image 元素中显示预览 function setImage id tar
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la
  • Vue.js[vuex] 如何从突变中调度?

    我有一个要应用于 json 对象的过滤器列表 我的突变看起来像这样 const mutations setStars state payload state stars payload this dispatch filter setRev
  • 用于验证目的的动态查找方法

    我正在使用 Ruby on Rails 3 0 7 我想在运行时查找一些记录以进行验证 但为该查找方法传递 设置一个值 也就是说 在我的班级中 我有以下内容 class Group lt lt ActiveRecord Base valid

随机推荐

  • 改造响应问题

    我正在尝试通过改造获取状态列表并尝试添加可搜索微调器 我得到什么 我收到了回复中的州列表 I can access one state in Spinner What i want 我想访问 Spinner 中的多个状态 Code getM
  • C# Office 2010 自动化

    我正在尝试制作一个程序 将数据插入到现有Word文档中的特定位置并保存它的副本 我不知道如何做到这一点 而且我找不到任何关于 Office 2010 自动化的好资源 谁能指出我正确的方向和 或给我一些例子 提前致谢 找到解决方案稍后添加答案
  • 硬币交换变体的动态规划解决方案

    我正在练习动态规划 我关注的是硬币兑换问题的以下变体 Let S 1 2 6 12 24 48 60 是整数硬币面额的常数集 让n是通过硬币可获得的正整数金额S 考虑两个人A and B 我可以用多少种不同的方式来分割n人与人之间A and
  • 在进行未更改的合并时,文件被列为挂起的更改?

    我们已经发生过多次这样的情况 我们认为这不仅仅是侥幸 当我们完成分支后合并回来时 会有比应有的更多的更改 因此 大多数显示为挂起更改的文件从未更改 在大多数情况下 既不在分支也不在基础 当我比较它们时 我使用超越比较 没有差异 我没有浏览所
  • 在数据库中存储字符串数组

    我有一个通过 ORM 保存到数据库的对象 该对象有一个字符串数组 每个对象的数组长度可能不同 我想知道在数据库中存储字符串数组的标准做法 例如 我应该将所有字符串存储在一个字段中作为 csv 等 我猜你有一个 MySql 关系数据库 作为第
  • 使用 OpenCV 和 ffmpeg 后端编码 HEVC 视频

    我尝试使用带有 ffmpeg 后端的 OpenCV 和 Python3 将网络摄像头编码为 HEVC 视频 它可以与其他编解码器配合使用 例如mjpg 这是我的示例脚本 它使用相应的fourcc 也尝试过hevc h265 x265 etc
  • 将 Joda LocalDate 或 java.util.Date 转换为当天开始时的 LocalDateTime

    我使用的是乔达2 5 将 Joda LocalDate 转换为 LocalDateTime 时遇到问题 因为 我可以将 LocalDate 转换为 DateTime 时间为 StartOfDay 我想要相同的功能 但通过 LocalDate
  • Struts2 devMode 在提交标签中使用“key”属性时出现异常

    我正在使用 Struts2devMode打开以捕获尽可能多的警告和错误 现在我遇到了一些仅在 devMode 中通知的严重通知 我正在使用submit标签 我包括key获取按钮文本的属性 Entrar 来自一个名为global BOTON
  • 如何将库添加到 Eclipse CDT? (没有这样的文件或目录)

    我在添加标头库时遇到一些问题 我右键单击我的项目 然后单击属性 gt C C 常规 gt 路径和符号 In the Includes tab 语言 gt GNU C 我点击添加 gt 文件系统然后添加名为 boost 1 52 0 的文件夹
  • Python tkinter mainloop 在关闭窗口时不退出

    我是编程和 Python 新手 正在制作一个计算器应用程序来练习 我正在使用 Tkinter 和 Python 2 7 该应用程序具有您所期望的各种按钮 以及用于显示数字 结果的条目和标签小部件 我认为我的程序确实启动了主循环 但关闭窗口并
  • 如何在Android中对组和子项可扩展列表视图进行排序?

    我在mysql中有两个表 它们通过id id catprods 和 ID Cat 绑定 类别 和 产品 到目前为止 一切顺利 我正在 Android 上使用 ExpandableListView 和自定义适配器 一切正常 但找不到用其产品对
  • 在 R 中的条形图上命名 x 轴

    我正在尝试在 R 中绘制条形图 我有 2 个向量 x lt c 1 2 3 4 y lt c 200 400 4000 255 A lt rbind x y to make it into a matrix barplot A ylim c
  • 为什么php中3个反斜杠等于4个反斜杠?

    为什么PHP中带有3个反斜杠的字符串等于带有4个反斜杠的字符串 我们可以在正则表达式中使用 3 个反斜杠版本吗 The PHP 参考说我们必须使用 4 个反斜杠 笔记 单引号和双引号 PHP 字符串具有反斜杠的特殊含义 因此如果 必须与正则
  • 如何证明 Ruby 的“for”循环实际上是使用“each”方法实现的?

    在书里Eloquent Ruby 第 21 页 第一版 第六次印刷 作者 Russ Olsen 主张使用each方法而不是for循环 这与我在其他地方读到的所有内容一致 然而 作者还接着说 这样做的原因之一是for循环实际上调用了each方
  • 如何在空手道中找到动态键值?

    我正在使用 JIRA API 根据周期名称获取周期 ID API http localhost 8080 rest zapi latest cycle projectId 78654 versionId 123 我收到以下回复 1345 t
  • “不允许加载本地资源:file:///C:....jpg”Java EE Tomcat

    我试图在良好存储后从文件系统中检索图片 我不是将其放入数据库 而是将其复制到光盘上 然后将路径放入数据库 我已将图片存储到 c images 文件夹 并假设完整路径的名称为 c images mypic jpg 当我尝试检索它时 将 img
  • SQL Server Management Studio - 在多个数据库中按名称查找存储过程

    我最近加入了一个拥有大约 20 40 个数据库的软件项目 每个数据库至少有200个存储过程 其中一些存储过程更多 所以我手动搜索特定过程非常慢 我知道有一个存储过程我需要查看它来修复错误 某处在整个项目中 称为XYZ procedure 如
  • 如何跨表内和标题中的多列扩展 DT 数据表单元格

    我在尝试将字符串分布在 DT datatable 标题和表本身的多个列中时遇到了极大的困难 我找到了这些解决方案 将表格单元格扩展到多列 合并 DT datatable 中的列 但似乎无法让他们为我自己的目的工作 这就是我得到的 这就是我要
  • 如何让用户的 iPhone 显示屏保持开启状态?

    因此 我正在寻找一种方法来让时钟应用程序保持用户的 iPhone 显示屏打开 我发现 UIApplication sharedApplication idleTimerDisabled YES 但这可以防止设备一直锁定 我尝试过了 UIAp
  • 使用 parsley.js 验证最大文件上传大小

    我在用着欧芹 js in a USP ProWordpress 中的表单 一般来说 验证是有效的 但现在我正在尝试验证最大文件大小 但我不太明白如何做到这一点 我找到了这些指示 但无法使其发挥作用 这是我的代码