как определить, что в поле ввода ничего не изменилось

У меня есть поле ввода со значением по умолчанию «введите ключевые слова». У меня также есть два других флажка, поэтому пользователи могут либо установить флажки и нажать поиск, либо ввести ключевое слово и выполнить поиск, либо сделать то и другое. На всякий случай они только выбирают, флажки, я хочу определить, не изменилось ли ничего в поле ввода, и установить его значение пустым. Как мне это сделать в jquery?

    <input name="KeywordBox" class="BasicSearchInputBox" type="text" 
size="300" value="Enter Keywords"/> 

Что-то вроде этого???

if (~$("input").change(function ()) {do sth;}

Пробовал: не работает ..

        var keywords = encodeURIComponent($(".BasicSearchInputBox").val()); 

if (keywords.indexOf("Enter Keywords") != -1)
                 {
                     url += '&k=' + checkboxValues;
                     window.location.href=url;
                 }
            if (keywords.indexOf("Enter Keywords") == -1){               
             window.location.href=url+'&k='+keywords+checkboxValues;
             }

person Anjana Sharma    schedule 01.03.2012    source источник
comment
Проверьте, является ли значение пустым или равным «Ввести ключевые слова». Если это так, игнорируйте, в противном случае используйте значение.   -  person j08691    schedule 01.03.2012
comment
Не будет encodeURIComponent кодировать пространство? Как + или% 20, я забываю, что это в данном случае.   -  person Rick    schedule 01.03.2012
comment
Что делает encodeURIComponent? возможно, он кодирует пространство в% 20? Взгляните сюда: developer.mozilla.org/en/JavaScript/Reference/Global_Objects /   -  person Gary.S    schedule 01.03.2012


Ответы (3)


Похоже, вы пытаетесь нанести водяной знак. В зависимости от требований к поддержке вашего браузера вы можете взглянуть на атрибут placeholder. Позволяет создать красивый водяной знак без фактического изменения значения текстового поля. (Существует множество плагинов jQuery, которые выполняют то же самое в кросс-браузерной манере.)

<input type="text" placeholder="Enter Keywords" /> 
person Eric    schedule 01.03.2012

Вместо использования indexOf вы можете проводить прямое сравнение.

    var keywords = encodeURIComponent($(".BasicSearchInputBox").val()); 

    if (keywords == "Enter Keywords")
    {
        window.location.href = url + '&k=' + checkboxValues;
    }
    else{               
        window.location.href = url + '&k=' + keywords + checkboxValues;
    }
person ShankarSangoli    schedule 01.03.2012
comment
вы имеете в виду if ($ ('. BasicSearchInputBox'). val () == Enter Keywords) - person Anjana Sharma; 01.03.2012

Что-то вроде:

function defaultTxt(obj) {
    var txt=obj.val();
    obj.focus(function(){
        if(obj.val()==txt) {obj.val('');}
    }).blur(function(){
        if(!obj.val()) {obj.val(txt);}
    });
}

Затем вызовите assign через цикл:

// Array or elements
var elems=['input'];
$(elems).each(function(){
    defaultTxt($(this));
});
person faino    schedule 01.03.2012