【问题标题】:JQuery validate triggered every time the browser gets the focus每次浏览器获得焦点时都会触发 JQuery 验证
【发布时间】:2012-01-24 09:52:33
【问题描述】:

我正在使用 jquery 验证插件来验证我的表单。我有一个不想验证的字段,但在某种程度上它还是被验证了,我收到错误消息“请输入不超过 5 个字符”。

验证的字段是 type=file 字段,我将它与 Fynework jQuery MultiForm 插件一起使用。当我尝试提交表单时,它没有得到验证,只有当我选择名称超过 5 个字符的文件时(我认为,短名称工作长不)。

我尝试将 .ignore 类添加到已验证的字段中,并将忽略规则添加到我的 validat() 中,而不是行为差异。

问题可能是什么?

这是我的 validat() 方法,我还包括添加该方法的点:

function addNewTicketValidation(){
                  $("#newticketform").validate({ 
                            ignore: ".ignore",
                            errorContainer: "#messageBox1",
                            errorLabelContainer: "#messageBox1 ul",
                            wrapper: "li", 
                            debug:true,
                            rules: {     
                             title: "required",                                  
                             description: "required"                                                                                     
                            }, 
                            messages: { 
                              title: "Titel saknas", 
                              description: "Beskrivning saknas" 
                            }
                          }); 
                    } 

      $("#newticketmanu").live('click',function(event){
          $("#adminarea").load("http://" + hostname + "/" + compdir + "/modules/core/newticket/newticket.php", function(){
                  $('#my_file_element').MultiFile();                    
                  addNewTicketValidation();  

          });
      }); 

我的表格:

<form method="post" enctype="multipart/form-data" id="newticketform" class="MultiFile-intercepted" novalidate="novalidate">
        <input type="hidden" value="2000000" name="MAX_FILE_SIZE">
        <label for="title">Rubrik</label> <input type="text" name="title" id="title"><br><br>
        <label for="description">Beskrivning</label> <textarea name="description" id="description" cols="50" rows="15"></textarea><br> 

         <div id="my_file_element_wrap" class="MultiFile-wrap"><input type="file" maxlength="5" name="file[]" id="my_file_element" class="multi ignore MultiFile-applied" value=""><div id="my_file_element_wrap_list" class="MultiFile-list"></div></div>
         <div id="files_list"></div>
         <input type="submit" value="Upload" name="upload"> 
</form>

问题可能是什么以及如何解决?

谢谢!

【问题讨论】:

    标签: javascript dom jquery-validate validation


    【解决方案1】:

    从文件输入中删除 maxlength="5" 属性。这由验证插件读取并作为规则添加(此处为第 812 行 https://github.com/jzaefferer/jquery-validation/blob/1.9.0/jquery.validate.js)。检查规范(http://www.blooberry.com/indexdot/html/tagpages/i/inputfile.htm),即使在文件输入中,最大长度仍然意味着字符长度,因此如果您想将用户限制为 5 个文件上传你需要一些其他的方法来实现这一点。

    【讨论】:

    • 谢谢!我懂了。所以问题是插件之间存在冲突,因为 MultiFile 使用 maxlength 作为属性?但是验证插件是否关心属性,我认为它只使用“名称”?当我删除 maxlength 时它确实起作用了,所以它肯定是根本原因。
    • 为了解决实际问题,可以使用类代替。例如。 class='max-2' 将最大文件数设置为 2。这与 maxlength 属性不冲突。
    猜你喜欢
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2012-06-16
    相关资源
    最近更新 更多