我有一个搜索字段,当它留空并且"搜索"单击按钮,错误消息"请输入搜索词"出现。这就是我想要发生的事情,但当你再次点击它时,消息会一遍又一遍地附加。我希望它只需追加一次。
这就是jquery的样子:
$('#search').find('input[type=submit]').click(function(){
if( ! $('input[name=keywords]').val()){
$('#search input[name=keywords]').addClass('error');
$( "#search" ).append( "<p class='errorMsg top'>Please enter a search term</p>" );
//alert('Please enter a search term');
return false;
} else {
_gaq.push(['_trackEvent', 'onsite_search', $('input[name=keywords]').val()]);
}
});
我已经尝试在if语句前添加它:
for i=0; i<1; i++
完全关闭了这个功能。我也尝试过添加
.one('click', function{
})
这种工作方式 - 它允许您在搜索框为空时单击搜索框,给出错误消息,但在第二次单击时,将搜索处理为&#34;&#34;。
非常感谢任何帮助!
另外,我认为这不重要,但这里是HTML:
<fieldset class="fieldset">
<legend>{lang:search_by_keyword}</legend>
<input type="text" class="input" maxlength="100" size="40" name="keywords" style="width:100%;" />
<div class="default">
<select name="search_in">
<option value="titles" selected="selected">{lang:search_in_titles}</option>
<option value="entries">{lang:search_in_entries}</option>
<option value="everywhere" >{lang:search_everywhere}</option>
</select>
</div>
答案 0 :(得分:0)
如果有一个变量来检查用户是否已被警告呢?然后,如果他没有被警告,你只需附加错误消息。
var alerted = false;
$('#search').find('input[type=submit]').click(function(){
if( ! $('input[name=keywords]').val() && ! alerted){
alerted = true;
$('#search input[name=keywords]').addClass('error');
$( "#search" ).append( "<p class='errorMsg top'>Please enter a search term</p>" );
//alert('Please enter a search term');
return false;
} else {
alerted = false; //alternatively, check if a <p> tag with class errorMsg exists and then set alerted = false
_gaq.push(['_trackEvent', 'onsite_search', $('input[name=keywords]').val()]);
}
});
答案 1 :(得分:0)
发布错误消息时使用.html而不是.append