2

Internet Explorer 又来了。

我正在尝试对我的搜索框进行一些简单的验证,但是如果您点击输入按钮而不是提交按钮,它会运行 JavaScript 错误,“请输入有效的搜索词。”

这是我的论坛:

 <div id="search_box">

<div style="float:left;">
    <form id="mini-search-form" name="searchform" action="/search/" method="get">
        <input type="hidden" name="searchaction" value="search" />
        <input type="hidden" name="profile" value="gameChangerAll" />
        <div id="search_input">
            <input type="text" name="query" id="query" placeholder="Search or Quote" size="10" onfocus="clearInput(this.id);" />
        </div> 


        <div id="search_button">
            <input type="submit" name="sitesearch" id="sitesearch" value="Go" />
        </div>
    </form>
</div>

然后这是我的验证:

 <script type="text/javascript">

jQuery("#mini-search-form").submit(function() {
    var match =/[a-zA-Z0-9]+/.exec(jQuery('#mini-search-form #query').val());
  if(!match){
    alert("Please enter valid search words.");
    jQuery('#mini-search-form #query').focus();
    return false;
  }

  return true;
});

4

2 回答 2

0

不知道为什么,但这.focus()是导致您的问题的线路。如果你把它移到 a 里面setTimeout,它就解决了这个问题。

jQuery("#mini-search-form").submit(function() {
    var match =/[a-zA-Z0-9]+/.exec(jQuery('#mini-search-form #query').val());
    if(!match){
        alert("Please enter valid search words.");
        setTimeout(function(){
            jQuery('#mini-search-form #query').focus();
        }, 0);
        return false;
      }
      return true;
});
于 2013-10-22T15:14:18.400 回答
0

我无法复制此问题,但我确实注意到您的匹配项不接受空格。

$("#mini-search-form").submit(function() {
var val = $('#query').val();
if(!val.match(/^[a-zA-Z0-9_\ ]+$/)){
    alert("Please enter valid search words.");
    $('#mini-search-form #query').focus();
    return false;
}
return true;
});

做了一个小提琴:http: //jsfiddle.net/filever10/SJXGm/

于 2013-10-22T15:23:03.193 回答