【问题标题】:Validate File Type using Foundation Abide使用 Foundation Abide 验证文件类型
【发布时间】:2013-12-02 22:17:27
【问题描述】:

我正在寻找使用 Foundation 的 Abide 插件来验证上传到 type="file" 输入标签的文件扩展名的类型,但我无法正确验证针对 RegExp 的检查。

html:

<div class="large-2 columns button">
    <input id="uploadResume" type="file" required pattern="resume" />
    <small class="error">PDF or Word Document only please</small>
</div>

javascript:

$(document)
    .foundation().foundation('abide', {
        patterns: {
        // check if the last 3 letters are acceptable
        resume: /^.(doc|DOC|pdf|PDF)*$/
    }
});

【问题讨论】:

  • 检查我的答案,因为您提供的正则表达式可能会给您带来麻烦,如果不是您得到什么错误?
  • @tafari 我尝试使用下面提供的两个示例,我相信您的回答是正确的,但我调用该函数的方式可能不正确,因为一旦我单击它就会出错文件输入。我单击输入,一旦我的文件选择出现,即使在选择了正确的 .pdf、.PDF、.doc 或 .DOC 后,该错误仍然存​​在。我相信问题出在我的 abide jquery 要求文件输入
  • 您正在尝试使用您的 pattern 验证 file,我建议尝试我给您的 pattern首先是一个简单的文本输入,例如:input type="text" pattern="resume" required&gt;,看看它是否在那里工作,如果是,那么它与输入类型有关。只需检查它,如果它也失败了,我们将需要更深入:> 干杯,祝你好运!
  • @Tafari 我将文件输入交换为文本输入以测试您的想法,不幸的是,regExp 看起来有问题。只是为了仔细检查它不是 javascript 中的 Abide 调用,我复制了他们的字母数字 redExp 并给它一个自定义名称,然后在有效的输入上调用它。我仍然担心它对于文件类型输入根本不起作用,但让我们先让文本输入版本工作并看看
  • 尝试在开始结束使用不带正斜杠/的命名模式,想知道它是否有帮助:?我还检查了Abide foundation docs 并引用它,您必须像这样定义您的命名 模式By overriding Abide during Foundation initilization, you can define your own custom patterns or override the default patterns to validate against.实际上看起来您做得对,但这可能是个问题,请尝试使用pattern 直接在 input 中,无需命名。

标签: javascript regex validation zurb-foundation abide


【解决方案1】:

现在您正在尝试匹配后面提到的扩展名的任何一个字符,因此请尝试以下模式:

图案

/\.(doc|DOC|pdf|PDF)$/

它将仅匹配点后跟任何提到的扩展名,因此可能性为:

.doc
.DOC
.pdf
.PDF

但是如果你想匹配整个文件名 + 扩展名使用这个:

图案

/^.+?\.(doc|DOC|pdf|PDF)$/

^ 之后添加了.+?,这意味着“匹配除换行符之外的任何字符0 次或更多次直到满足下一个标记,还添加了\. 以匹配扩展之前的点。我还删除了不需要的*,它会导致重复扩展。

示例

filename.PDF

此文件将被匹配。

filename.exe

这将不匹配。

最终答案

使用第二个模式作为内联模式:

<input type="file" required pattern="^.+?\.(doc|DOC|pdf|PDF)$" />.

显然在使用内联模式时存在一些问题,这会迫使您在模式的开头和结尾都删除正斜杠。此外,命名模式似乎很奇怪,我不确定为什么会这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-30
    • 2014-10-11
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多