IE8在输入和跳闸javascript验证时没有运行搜索字段

时间:2013-10-22 14:43:09

标签: javascript jquery html internet-explorer-8 compatibility

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;
});

2 个答案:

答案 0 :(得分:0)

不确定原因,但导致问题的是.focus()行。如果您将其移到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;
});

答案 1 :(得分: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/