esc*_*ist 8 jquery jquery-validate asp.net-mvc-validation asp.net-mvc-3
我正在使用表单上传文件.我只想上传PDF文件.这是我的代码:
一个允许用户选择文件的输入框:
@Html.FileBox(m => m.FileName, new { id = "FileName", accept = "application/pdf" })
Run Code Online (Sandbox Code Playgroud)
和显示错误消息的地方:
@Html.ValidationMessageFor(m=>m.FileName)
Run Code Online (Sandbox Code Playgroud)
为输入字段生成的代码是:
<input id="FileName" type="file" name="FileName" data-val-required="The File Name field is required." data-val-length-max="512" data-val-length="The field File Name must be a string with a maximum length of 512." data-val="true" accept="application/pdf">
Run Code Online (Sandbox Code Playgroud)
现在,即使我选择了PDF文件,也会出错 Please enter a value with a valid extension.
我正在使用MVC 3和不引人注意的jquery来验证表单.
Ema*_*uel 12
我有同样的问题,不得不完全禁用accept属性的验证.我将以下行添加到我的页面并且它有效:
$ .validator.addMethod('accept',function(){return true;});
他们使用版本1.10.0更改了"accept"方法的行为.它现在不是检查文件扩展名,而是查看mime类型.旧行为现在可用作"扩展"方法.所以你只需更新你的jquery验证插件版本就可以了.我用1.11.0替换了我当前的版本1.9.0并将有效的mime-types设置为accept-attribut.它现在按预期工作:
accept="image/*, application/pdf"
Run Code Online (Sandbox Code Playgroud)
jQuery Validation中内置的"accept"规则方法以类似"jpg | png"的格式获取值.
"accept"HTML属性采用类似"image/jpeg,image/png"的格式.
看来jQuery Validation和HTML标准在这方面是不兼容的.
在这里,您可以阅读有关jQuery Validation的"接受"规则和HTML5"接受"属性的更多信息.
小智 6
如果你把两种格式作为你的接受属性,它应该工作
accept="image/jpeg,image/png,jpg|png"
Run Code Online (Sandbox Code Playgroud)