JQuery: пустое поле ввода по клику - PullRequest
9 голосов
/ 19 марта 2012

Я понятия не имею, почему это не работает, но я уверен, что это очень распространенная часть JavaScript.Мой синтаксис явно отсутствует, и я не знаю почему:

<input type="text" value="search" id="search" name="q" onclick="javascript:if($(this).val() == 'search') {$(this).val() = '';} return false;" />

Спасибо!

Ответы [ 7 ]

16 голосов
/ 19 марта 2012

Ваша проблема с этой строкой кода:

$(this).val() = ''

Правильный способ установить значение в jQuery:

$(this).val("Your value here");

Кроме того, встроенный JS никогда не бывает хорошимидея.Используйте это вместо:

$("#search").on("click", function() {
    if ($(this).val() == "search")
        $(this).val("")
});​

Вот рабочая скрипка .

Ссылки: jQuery .val()

4 голосов
/ 19 марта 2012

Поместите это в отдельный файл js ...

это вернет его к начальному значению, если ничего не будет напечатано после потери фокуса.

$(document).ready( function() {
    $("#search").focus( function() {
        if ( $(this).val()=="search") {
            $(this).val('');
        } 
    });

    $("#search").blur( function() {
        if ( $(this).val()=="") {
            $(this).val('search');
        } 
    });
});
2 голосов
/ 19 марта 2012

Должно быть так:

<input type="text" value="search" id="search" name="q" onclick="javascript:if($(this).val() == 'search') {$(this).val('');} return false;" />

correct way   : $this.val('');
incorrect way : $this.val() = '';
2 голосов
/ 19 марта 2012
$(this).val() = '';

должно быть

$(this).val('');

См. .val () документация.

1 голос
/ 04 октября 2016

Это стало проще с HTML5-заполнителем:

<input type="text" name="search" placeholder="Enter your search query here">

Это не поддерживается в старых браузерах, но если вы ориентируетесь только на современные, вы можете использовать его: http://caniuse.com/#feat=input-placeholder

0 голосов
/ 19 марта 2012
function search(textBox)
{
   if($(textBox).val() == 'search') {
        $(textBox).val() = '';
   } 
   return false;
}

<input type="text" value="search" id="search" name="q" onclick="return search();" />

Попробуйте и отладьте.

0 голосов
/ 19 марта 2012

нет, вам не нужно $ (this) .val (""); или $ (this) .val (''); опустошить его

<input type="text" value="search" id="search" name="q" onclick="javascript:if($(this).val() == 'search') {$(this).val('');} return false;" />
...