Как обнаружить, если ничего не изменилось в поле ввода
У меня есть поле ввода, которое имеет значение по умолчанию "введите ключевые слова". У меня также есть два других флажка, так что пользователи могут либо установить флажки и нажать "Поиск", либо ввести ключевое слово и выполнить поиск, либо выполнить оба действия. На всякий случай, они только выбирают, флажки, я хочу обнаружить, если ничего не изменилось в поле ввода и установить его значение пустым. Как мне сделать это в 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;
}
3 ответа
Похоже, вы пытаетесь сделать водяной знак. В зависимости от требований поддержки вашего браузера, вы можете захотеть взглянуть на атрибут placeholder. Позволяет получить хороший водяной знак без фактического изменения значения текстового поля. (Существует множество плагинов jQuery, которые выполняют одно и то же в кросс-браузерной манере.)
<input type="text" placeholder="Enter Keywords" />
Вместо того, чтобы использовать indexOf
Вы можете сделать прямое сравнение.
var keywords = encodeURIComponent($(".BasicSearchInputBox").val());
if (keywords == "Enter Keywords")
{
window.location.href = url + '&k=' + checkboxValues;
}
else{
window.location.href = url + '&k=' + keywords + checkboxValues;
}
Что-то вроде:
function defaultTxt(obj) {
var txt=obj.val();
obj.focus(function(){
if(obj.val()==txt) {obj.val('');}
}).blur(function(){
if(!obj.val()) {obj.val(txt);}
});
}
Затем вызовите назначение через цикл:
// Array or elements
var elems=['input'];
$(elems).each(function(){
defaultTxt($(this));
});