Используя jQuery, как я могу очистить входной текст после того, как сделал клик? По умолчанию значение остается в поле ввода.
Например, у меня есть текст ввода, а значение TEXT
. Когда я выполняю щелчок, я хочу, чтобы поле ввода стало пустым.
Используя jQuery, как я могу очистить входной текст после того, как сделал клик? По умолчанию значение остается в поле ввода.
Например, у меня есть текст ввода, а значение TEXT
. Когда я выполняю щелчок, я хочу, чтобы поле ввода стало пустым.
Чтобы удалить текст по умолчанию, щелкнув элемент:
$('input:text').click(
function(){
$(this).val('');
});
Я бы предложил вместо focus()
использовать focus()
:
$('input:text').focus(
function(){
$(this).val('');
});
который также реагирует на события клавиатуры (например, клавиша табуляции). Кроме того, вы можете использовать атрибут placeholder
в элементе:
<input type="text" placeholder="default text" />
Которая очистится от фокуса элемента и снова появится, если элемент останется пустым/пользователь ничего не вводит.
Обновление: Я произнес ваше слово "click" буквально, что было немного немым. Вы можете заменить focus
на click
на все ниже, если вы также хотите, чтобы действие произошло, когда пользователь вставляет вкладку на вход, что кажется вероятным.
Обновление 2: Я предполагаю, что вы хотите сделать заполнители; см. примечание и пример в конце.
Оригинальный ответ:
Вы можете сделать это:
$("selector_for_the_input").click(function() {
this.value = '';
});
... но это очистит текст независимо от того, что это такое. Если вы хотите очистить его, только если это значение:
$("selector_for_the_input").click(function() {
if (this.value === "TEXT") {
this.value = '';
}
});
Так, например, если вход имеет id
, вы можете сделать:
$("#theId").click(function() {
if (this.value === "TEXT") {
this.value = '';
}
});
Или если он в форме с id
(скажем, "myForm" ), и вы хотите сделать это для каждого поля формы:
$("#myForm input").click(function() {
if (this.value === "TEXT") {
this.value = '';
}
});
Вы также можете сделать это с делегацией:
$("#myForm").delegate("input", "click", function() {
if (this.value === "TEXT") {
this.value = '';
}
});
Это использует delegate
, чтобы подключить обработчик в форме, но примените его к входам в форме, а не подключить обработчик для каждого отдельного входа.
Если вы пытаетесь сделать заполнители, там больше, чем это, и вы можете захотеть найти хороший плагин для этого. Но вот основы:
HTML:
<form id='theForm'>
<label>Field 1:
<input type='text' value='provide a value for field 1'>
</label>
<br><label>Field 2:
<input type='text' value='provide a value for field 2'>
</label>
<br><label>Field 3:
<input type='text' value='provide a value for field 3'>
</label>
</form>
JavaScript с помощью jQuery:
jQuery(function($) {
// Save the initial values of the inputs as placeholder text
$('#theForm input').attr("data-placeholdertext", function() {
return this.value;
});
// Hook up a handler to delete the placeholder text on focus,
// and put it back on blur
$('#theForm')
.delegate('input', 'focus', function() {
if (this.value === $(this).attr("data-placeholdertext")) {
this.value = '';
}
})
.delegate('input', 'blur', function() {
if (this.value.length == 0) {
this.value = $(this).attr("data-placeholdertext");
}
});
});
Конечно, вы также можете использовать новый атрибут placeholder
из HTML5 и выполнять только выше, если ваш код работает в браузере который не поддерживает его, и в этом случае вы хотите инвертировать используемую выше логику:
HTML:
<form id='theForm'>
<label>Field 1:
<input type='text' placeholder='provide a value for field 1'>
</label>
<br><label>Field 2:
<input type='text' placeholder='provide a value for field 2'>
</label>
<br><label>Field 3:
<input type='text' placeholder='provide a value for field 3'>
</label>
</form>
JavaScript с jQuery:
jQuery(function($) {
// Is placeholder supported?
if ('placeholder' in document.createElement('input')) {
// Yes, no need for us to do it
display("This browser supports automatic placeholders");
}
else {
// No, do it manually
display("Manual placeholders");
// Set the initial values of the inputs as placeholder text
$('#theForm input').val(function() {
if (this.value.length == 0) {
return $(this).attr('placeholder');
}
});
// Hook up a handler to delete the placeholder text on focus,
// and put it back on blur
$('#theForm')
.delegate('input', 'focus', function() {
if (this.value === $(this).attr("placeholder")) {
this.value = '';
}
})
.delegate('input', 'blur', function() {
if (this.value.length == 0) {
this.value = $(this).attr("placeholder");
}
});
}
function display(msg) {
$("<p>").html(msg).appendTo(document.body);
}
});
(Kudos to diveintohtml5.ep.io для placholder
код обнаружения функции.)
$("input:text").focus(function(){$(this).val("")});
Вы можете попробовать это
$('#myFieldID').focus(function(){
$(this).val('');
});
Я предполагаю, что вы пытаетесь создать эффект, где текстовое поле содержит метку. И когда пользователь нажимает в текстовом поле, он исчезает и позволяет пользователю вводить текст. Для этого вам не требуется JQuery.
<input type="text" value="Input Text" onfocus="this.value=''" onblur="(this.value=='')? this.value='Input Text':this.value;" />
function submitForm() { if (testSubmit()) { document.forms["myForm"].submit(); //first submit document.forms["myForm"].reset(); //and then reset the form values } } </script> <body> <form method="get" name="myForm"> First Name: <input type="text" name="input1"/> <br/> Last Name: <input type="text" name="input2"/> <br/> <input type="button" value="Submit" onclick="submitForm()"/> </form>
Это сработало для меня:
**//Click The Button**
$('#yourButton').click(function(){
**//What you want to do with your button**
//YOUR CODE COMES HERE
**//CLEAR THE INPUT**
$('#yourInput').val('');
});
Итак, сначала вы выбираете кнопку с помощью jQuery:
$('#button').click(function((){ //Then you get the input element $('#input')
//Then you clear the value by adding:
.val(' '); });
Использование jQuery...
$('#submitButtonsId').click(
function(){
$(#myTextInput).val('');
});
Используя чистый Javascript...
var btn = document.getElementById('submitButton');
btn.onclick = function(){ document.getElementById('myTextInput').value="" };
Если вам нужно местоподобное поведение. вы можете использовать это.
$("selector").data("DefaultText", SetYourDefaultTextHere);
// You can also define the DefaultText as attribute and access that using attr() function
$("selector").focus(function(){
if($(this).val() == $(this).data("DefaultText"))
$(this).val('');
});
Существует элегантный способ сделать это:
<input type="text" value="Search" name=""
onfocus="if (this.value == 'Search') {this.value = '';}"
onblur="if (this.value == '') {this.value = 'Pesquisa';}"/>
Таким образом, если вы введете что-либо внутри окна поиска, оно не будет удалено, если вы снова щелкните внутри поля.
попробуйте это
$("input[name=search-mini]").on("search", function() {
//do something for search
});
я тоже попробовал это
$('#inputID').focus(function(){
$(this).val('');
});
Я бы рекомендовал использовать это, так как у меня есть тот же вопрос, который исправлен.
$('input:text').focus(
function(){
$(this).val('');
});
enter code here<form id="form">
<input type="text"><input type="text"><input type="text">
<input type="button" id="new">
</form>
<form id="form1">
<input type="text"><input type="text"><input type="text">
<input type="button" id="new1">
</form>
<script type="text/javascript">
$(document).ready(function(e) {
$("#new").click( function(){
//alert("fegf");
$("#form input").val('');
});
$("#new1").click( function(){
//alert("fegf");
$("#form1 input").val('');
});
});
</script>