【问题标题】:file input field validation文件输入字段验证
【发布时间】:2012-12-03 13:38:02
【问题描述】:

我试过了,还是不行。

我想做以下事情:

点击提交按钮时,profilePic 应该被验证。 profilePic 不能为空,并且只能接受其中一个

gif|png|jpg|jpeg|pjpeg

文件。

我还想添加最大上传大小。

 $("#basicprofile").bind("submit", function() {
            $("#profilePic").validate({
                rules: {
                    field: {
                        required: true,
                        accept: "gif|png|jpg|jpeg|pjpeg"
                    }
                }
            });
        });


 <s:form action="basicprofile" method="post" enctype="multipart/form-data" 
  id="basicprofile">
       <s:file name="profilePic"  id="profilePic" label="Profile Picture" />
       <s:submit />
 </s:form>

【问题讨论】:

    标签: jquery validation struts2 jquery-validate struts2-jquery


    【解决方案1】:
    $(document).ready(function() {
    
        $("#basicprofile").validate({
            rules: {
                profilePic: {
                    required: true,
                    accept: "gif|png|jpg|jpeg|pjpeg"                
                }
            },
    
            messages: {
                profilePic: {
                    required: "Empty file",
                    accept: "Wrong format!!"
                }                  
            },
    
            errorPlacement: function(error, element) {
                $("#error-messages").html(error); // error container
            }
    
        });
    
    });
    

    您可以在浏览器中检查该字段是否已填充并且文件格式是否正确,但检查文件大小是一个难题。您必须使用 AJAX,并使用浏览器在 POST 请求中发送到服务器的文件大小标头。

    Yahoo 的 UI 库有一个工具可以帮助解决这个问题。 YUI 上传器

    示例(不检查文件大小):http://jsfiddle.net/burlak/U36JS/

    【讨论】:

    • 以上链接有效,但在我的本地系统上无效。我正在使用 1.8.3/jquery.min.js 并将上面的代码粘贴到 标记
    • 不包括在内
    • 这个
    • 我有一个简单的例子,我只是粘贴脚本包括这个例子)
    【解决方案2】:

    您必须验证表单,而不是字段。我相信它必须是这样的:

    $("#basicprofile").validate({
        rules: {
            profilePic: {
                required: true,
                accept: "gif|png|jpg|jpeg|pjpeg"
            }
        }
    });
    

    【讨论】:

    • @Manish 如果出现错误,您是否查看过您最喜欢的 javascript 调试器工具(例如:Google Chrome 开发人员工具 -> 控制台)
    • @Manish 我也改变了我的答案,我之前用 jquery 进行了验证,所以我不记得如何绑定 validate 事件了。我认为没有必要绑定 submit 事件(就像 Burlak 回答一样)。
    • 我认为,这是行不通的,因为您在 dom 准备好之前初始化验证。尝试在 $(document).ready(...) 中使用它
    • @BurlakIlia 如果将脚本放在&lt;/body&gt; 之前,则无需调用$(document).ready(...)
    猜你喜欢
    • 1970-01-01
    • 2012-10-18
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多