2010-11-03 3 views
2

Я использую приведенный ниже код, чтобы показать скрытое значение по умолчанию для фокуса. Тем не менее, я собираюсь использовать несколько форм на одной странице и не хочу создавать этот js для каждого поля ввода, довольно много времени и, возможно, слишком много js.Форма ввода показать скрыть значение по умолчанию для фокуса

Html

<input type="text" class="sb" value="Search CT..."/> 

Javascript

//search box 
$("input.sb").focus(function(){ 
    if ($(this).val() == "Search CT...") 
    $(this).val(''); 
}); 
$("input.sb").blur(function(){ 
    if ($(this).val() == "") 
    $(this).val('Search CT...'); 
}); 

мне было интересно, если есть способ, чтобы создать некоторые общие JS, чтобы показать/скрыть значение по умолчанию, независимо от его содержания, будет работать на всех входных форматах?

Надеюсь, что это имеет смысл, спасибо большое.

+0

Значение по умолчанию зависит от элемента? – lonesomeday

ответ

7

Этот код будет выглядеть через все элементы ввода текста и элементов текстовой области на странице загрузки. Он сохранит свои исходные значения, используя $.data. Затем он будет производить опорожнение и повторное наполнение.

$(document).ready(function(){ 
    $('form input:text, form textarea').each(function(){ 
     $.data(this, 'default', this.value); 
    }).focus(function(){ 
     if ($.data(this, 'default') == this.value) { 
      this.value = ''; 
     } 
    }).blur(function(){ 
     if (this.value == '') { 
      this.value = $.data(this, 'default'); 
     } 
    }); 
}); 
+0

Приветствует, отлично работает. :) – Mark

0

Вы можете создать карту, более или менее, как это:

Javascript

function setEvents(id, txt){ 
    $("#" + id) 
    .focus(function(){ 
     if ($(this).val() == txt) $(this).val(''); 
    }) 

    .blur(function(){ 
     if ($(this).val() == "") $(this).val(txt); 
    }); 
} 

var map = { 
    input1: "your text", 
    input2: "other text" 
}; 

for(var i in map){ 
    setEvents(i, map[i]); 
} 

Где ключи к объект карты представляет входные идентификаторы, а значения представляют значение по умолчанию

1

Try ниже код -

$(document).ready(function(){ 
    var value = ''; 
    $("input.sb").focus(function(){ 
    value = $(this).val(); 
    if (value != ""){ 
     $(this).val(''); 
    } 
    }); 
    $("input.sb").blur(function(){ 
    if ($(this).val() == ""){ 
     $(this).val(value); 
    } 
    }); 

}); 
+0

Спасибо, этот метод также работает. – Mark

0
$("input").focus(function(){ 
      $(this).val(''); 
}); 

или дать общий класс для каждого поля ввода

+0

Спасибо, этот метод удаляет значение по умолчанию, но не возвращает его после нажатия на вход. – Mark

Смежные вопросы