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

この問題を再現することはできませんでしたが、一致がスペースを受け入れないことに気付きました。

$("#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 に答える
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;
});
于 2013-10-22T15:14:18.400 に答える