2014-01-04 2 views
0

Я хочу очистить поле входа, когда оно выбрано. Я работаю с JS/JQuery-Book и скопировал пример точно, как это в мой документ, но он не хочет работать ...jQuery focus() и пустое поле

поле:

<input type="text" id="username" value="Username" name="username" /> 

JQuery:

$(document).ready(function(){ 
$("#username").focus(function(){ 
    var field = $(this); 
    if(field.val() == field.attr("defaultValue")){ 
    field.val(""); // also tried field.val() = ""; 
    } 
}); 
}); 

Я уже поставил предупреждение() после каждой строки, и я понял, что он не входит в оператор if.

+1

«Текстовые поля имеют атрибут DefaultValue, который представляет собой текст внутри поле при первой загрузке страницы "- JavaScript & jQuery - Отсутствует руководство, 2012 – TheElbenreich

+0

Вот [ссылка] (http://www.w3schools.com/jsref/prop_text_defaultvalue.asp) в документацию по умолчанию. –

+0

Да, именно это использует jQuery, но почему это не работает? – TheElbenreich

ответ

0

Используйте метод jQuery prop, чтобы получить атрибут DOM вместо attr.

$(document).ready(function(){ 
    $("#username").focus(function(){ 
     var field = $(this); 
     if(field.val() == field.prop("defaultValue")){ // or: field.val() == field[0].defaultValue 
      field.val(""); 
     } 
    }); 
}); 
+1

«Текстовые поля имеют атрибут defaultValue, который представляет текст внутри поля при первой загрузке страницы» - JavaScript & jQuery - Отсутствует руководство, 2012 – TheElbenreich

0
$("#username").focus(function(){ 
    $(this).val(""); 
}); 

Как просто, как он может получить.

+1

Это прекрасно работает. Но если вы начнете опрокидываться, а затем перейдите к следующему полю, а затем перейдите в первое поле, все, что вы уже набрали, будет стерто ... – TheElbenreich

+0

Почему бы вам вместо этого не использовать вместо этого местозаполнитель? Ajey

+0

Будет ли идея, но она не поддерживается во всех браузерах ... – TheElbenreich

0

Использование .prop() (см jsfiddle):

$("#username").focus(function(){ 
    var field = $(this); 

    if(field.val() == field.prop("defaultValue")) { 
     field.val(""); 
    } 
}); 
0

Попробуйте:

<input type="text" id="username" value="Username" name="username" defaultValue="" />

И попробуйте:

$(document).ready(function(){ 
    $("#username").focus(function(){ 
     if($(this).val() === $(this).attr("defaultValue")){ 
      $(this).val(""); 
     } 
    }); 
}); 
0

Попробуйте это ... .

$(document).ready(function(){ 
var user = $("#username").val(); 
$("#username").focus(function() 
{ 
if($(this).val()==user) 
$(this).val(""); 
}); 
}); 

Это прекрасно работает для меня.

1

Вы можете попробовать это ...

$("#username").focus(function(){ 
var field = $(this); 
var username=field.attr("value"); 
if(field.val() == username){ 
    field.val(""); 
} 
}); 

Испытано и правильно работать с ATTR также ....

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