Событие Onclick для удаления значения по умолчанию в текстовом поле ввода
У меня есть поле ввода:
<input name="Name" value="Enter Your Name">
Как я могу заставить его удалить предварительно определенный текст (Enter Your Name), когда пользователь нажмет на это поле.
Насколько мне известно, Javascript - лучший способ сделать это. Если это неправильно, сообщите мне.
Ответы
Ответ 1
Атрибут закладок HTML5
Вероятно, вам нужна функциональность placeholder
:
<input name="Name" placeholder="Enter Your Name" />
Polyfill для старых браузеров
Это не будет работать в некоторых старых браузерах, но существуют полиполны (некоторые требуют jQuery, а другие нет) для исправления этой функциональности.
"Вверните его, я сделаю это сам".
Если вы хотите перевернуть свое собственное решение, вы можете использовать события onfocus
и onblur
вашего элемента, чтобы определить, каково его значение:
<input name="Name" value="Enter Your Name"
onfocus="(this.value == 'Enter Your Name') && (this.value = '')"
onblur="(this.value == '') && (this.value = 'Enter Your Name')" />
Избегать смешивания HTML с JavaScript
Вы обнаружите, что большинство из нас не являются большими поклонниками оценки JavaScript из таких атрибутов, как onblur
и onfocus
. Вместо этого чаще всего рекомендуется связывать эту логику исключительно с JavaScript. Конечно, это немного более многословно, но он сохраняет хорошее разделение между вашей логикой и вашей разметкой:
var nameElement = document.forms.myForm.Name;
function nameFocus( e ) {
var element = e.target || window.event.srcElement;
if (element.value == "Enter Your Name") element.value = "";
}
function nameBlur( e ) {
var element = e.target || window.event.srcElement;
if (element.value == "") element.value = "Enter Your Name";
}
if ( nameElement.addEventListener ) {
nameElement.addEventListener("focus", nameFocus, false);
nameElement.addEventListener("blur", nameBlur, false);
} else if ( nameElement.attachEvent ) {
nameElement.attachEvent("onfocus", nameFocus);
nameElement.attachEvent("onblur", nameBlur);
}
Демо: http://jsbin.com/azehum/2/edit
Ответ 2
Это правильный, кросс-браузерный способ сделать это:
<input type="text" value="Enter Your Name" onfocus="if(this.value == 'Enter Your Name') { this.value = ''; } " onblur="if(this.value == '') { this.value = 'Enter Your Name'; } " />
Ответ 3
Как уже говорилось, я даже видел этот вопрос placeholder
- это ответ. HTML5 для победы! Но для тех бедных несчастных душ, которые не могут полагаться на эту функциональность, посмотрите на плагин jquery как на увеличение. HTML5 Placeholder jQuery Plugin
<input name="Name" placeholder="Enter Your Name">
Ответ 4
u может использовать placeholder, и когда u напишет текст в поле поиска, скрытие будет скрыто.
Благодаря
<input placeholder="Search" type="text" />
Ответ 5
Используйте onclick="this.value=''"
:
<input name="Name" value="Enter Your Name" onclick="this.value=''">
Ответ 6
Это должно сделать это:
HTML
<input name="Name" value="Enter Your Name" onClick="blankDefault('Enter Your Name', this)">
JavaScript
function blankDefault(_text, _this) {
if(_text == _this.value)
_this.value = '';
}
Есть более/менее навязчивые способы, но это выполнит работу.
Ответ 7
Вы действительно хотите показать местозаполнитель, HTML 5 предлагает эту функцию, и это очень мило!
Попробуйте следующее:
<input name="Name" placeholder="Enter Your Name">
Ответ 8
<input name="Name" value="Enter Your Name" onfocus="freez(this)" onblur="freez(this)">
function freez(obj)
{
if(obj.value=='')
{
obj.value='Enter Your Name';
}else if(obj.value=='Enter Your Name')
{
obj.value='';
}
}
Ответ 9
В дополнение к placeholder="your text"
вы также можете сделать onclick="this.value='';
Итак, это выглядит примерно так:
<input name="Name" value="Enter Your Name" onclick="this.value='';>