点击后如何清除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时发生该操作,则可以将focus
replace为以下所有内容中的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为placholder
function检测代码 。)
$("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>