我有这个代码,只有在第一次点击时才能从textarea 中删除文本。只有在我写下第二个textarea标签时才能正常工作:
<textarea id="textarea2" onfocus="checkOnFocus(this);" onblur="resetInitialText(this);">Your second message</textarea>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
var flag = false;
function setInitialText() {
var textarea = document.getElementById('textarea');
if (textarea.value == "") {
textarea.value = text;
}
}
function checkOnFocus(textarea) {
if (!flag) textarea.value = "";
flag = true;
}
function resetInitialText(textarea) {
if (textarea.value == "") {
textarea.value = text;
flag = false;
}
}
</script>
</head>
<body onload="setInitialText();">
<textarea id="textarea" onfocus="checkOnFocus(this);" onblur="resetInitialText(this);">Your first message</textarea>
<textarea id="textarea2" onfocus="checkOnFocus(this);" onblur="resetInitialText(this);">Your second message</textarea>
</body>
</html>
答案 0 :(得分:1)
我终于找到了如何做我的要求:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title></title>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.4.2.js'></script>
<script type='text/javascript'>//<![CDATA[
$(function() {
$("textarea").focus(function(event) {
// Erase text from inside textarea
$(this).text("");
// Disable text erase
$(this).unbind(event);
});
});
//]]>
</script>
</head>
<body>
<textarea rows="5" cols="30">Enter text here.</textarea>
<textarea rows="5" cols="30">Enter text here.</textarea>
</body>
</html>
答案 1 :(得分:1)
从你的回答中可以看出,你可以使用jquery,你可以尝试以下作为一个非常基本的占位符 -solution:
$('[data-placeholder]').each(function () {
var placeholder = $(this).data('placeholder');
$(this).val(placeholder).on({
focus: function () {
$(this).val(function (_, value) {
return value === placeholder ? '' : value;
});
},
blur: function () {
$(this).val(function (_, value) {
return value === '' ? placeholder : value;
});
}
});
});
使用:
<textarea data-placeholder="Your first message"></textarea>
<textarea data-placeholder="Your second message"></textarea>
答案 2 :(得分:0)
您只有一个(全局)标志和两个textareas,因此在进行第二次调用时,该标志已设置为true。考虑使用数组或字典类型结构来创建通用实现。一种选择是在全局范围内使用数组:
var textareasAlreadyHit = new Array();
然后每次你:
function checkOnFocus(textarea)
检查数组是否包含textarea的id,而不是检查标志。如果是的话,什么也不做。如果没有,请从textarea中删除文本,并将textarea的id添加到数组中。
答案 3 :(得分:0)
function checkOnFocus(textarea){
if(!flag)
textarea.value="";
flag=false;
}
function resetInitialText(textarea){
if(textarea.value==""){
textarea.value='text';
flag=false;
}
这里有两个变化
1&gt;检查OnFocus()方法
flag=false;
2&gt; resetInitialText()方法
textarea.value='text';// make your own string to replace