点击后如何清除input文字

使用jQuery,我怎样才能清除input文字后,我点击? 默认情况下,该值保留在input字段中。

例如,我有一个input文本,值是TEXT 。 当我点击时,我想让input栏变空。

要删除默认文本,请单击该元素:

 $('input:text').click( function(){ $(this).val(''); }); 

不过,我会build议使用focus()来代替:

 $('input:text').focus( function(){ $(this).val(''); }); 

它也响应键盘事件(例如制表键)。 另外,你可以在元素中使用placeholder属性:

 <input type="text" placeholder="default text" /> 

这将清除元素的焦点,并重新出现,如果元素保持空/用户不input任何东西。

更新:我从字面上理解了“咔嗒”一词,这有点愚蠢。 如果您还希望在用户选中input时发生该操作,则可以将focusreplace为以下所有内容中的click操作,这似乎是可能的。

更新2:我的猜测是,你正在寻找占位符; 最后看注释和例子。


原始答案

你可以这样做:

 $("selector_for_the_input").click(function() { this.value = ''; }); 

…但是这将清除文本,不pipe它是什么。 如果你只想清除它,如果它是一个特定的值:

 $("selector_for_the_input").click(function() { if (this.value === "TEXT") { this.value = ''; } }); 

例如,如果input有一个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挂钩窗体上的处理程序,但将其应用于窗体上的input,而不是连接到每个单独的input的处理程序。


如果你正在尝试占位符,除此之外还有更多,你可能想要find一个好的插件来做到这一点。 但是这里的基础知识:

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> 

使用jQuery的JavaScript:

 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"); } }); }); 

实时复制

当然,您也可以使用HTML5中的新placeholder属性 ,并且只在上面的代码在不支持它的浏览器上运行时才执行上述操作,在这种情况下,您需要反转上面使用的逻辑:

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); } }); 

实时复制

(荣誉diventohtml5.ep.io为placholderfunction检测代码 。)

 $("input:text").focus(function(){$(this).val("")}); 

你可以试试这个

 $('#myFieldID').focus(function(){ $(this).val(''); }); 

我想你正在尝试创build一个效果,其中的文本框包含一个标签。 而当用户点击文本框时,它会消失,并让用户input文字。 你不需要这个Jquery。

 <input type="text" value="Input Text" onfocus="this.value=''" onblur="(this.value=='')? this.value='Input Text':this.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[name=search-mini]").on("search", function() { //do something for search }); 

有一个很好的方法来做到这一点:

 <input type="text" value="Search" name="" onfocus="if (this.value == 'Search') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Pesquisa';}"/> 

这样,如果您在search框内input任何内容,则在再次单击框内时不会被删除。

 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> 

我会build议使用这个,因为我有相同的问题已经修复。

 $('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>