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