Jquery附加一次错误消息

时间:2015-02-02 22:43:07

标签: jquery search append

我有一个搜索字段,当它留空并且"搜索"单击按钮,错误消息"请输入搜索词"出现。这就是我想要发生的事情,但当你再次点击它时,消息会一遍又一遍地附加。我希望它只需追加一次。

这就是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>

2 个答案:

答案 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