js仅删除默认消息onclick,而不删除用户输入的文本

时间:2011-03-05 14:40:34

标签: javascript forms textarea jtextarea

下午所有,

需要来自主人的一些技术建议...我知道从表单中删除单击时的默认消息的功能,但是出现的问题是用户最初点击了消息区域后(要删除)默认情况下,如果他们再次点击消息区域,它会删除他们写的内容!!我想一个例子是,如果他们注意到拼写错误或需要改变他们的部分信息。

必须有办法解决这个问题吗?

文本区域的代码是:

<textarea name="message" id="message" rows="9" cols="55" tabindex="9"   onclick="this.value=''">
  <?php if(isset($error)) {echo $message;} else {echo "Please use this area for any other information about your enquiry";}?>
</textarea>

5 个答案:

答案 0 :(得分:1)

在初始onclick之后,您将需要使用以下内容从textarea中删除onclick属性:

document.getElementById('message').onclick = null;

您可以更改onclick以调用执行this.value = ''的函数,然后删除onclick。

编辑:

<textarea name="message" id="message" rows="9" cols="55" tabindex="9"   onclick="removeDefaultText(this)">
  <?php if(isset($error)) {echo $message;} else {echo "Please use this area for any other information about your enquiry";}?>
</textarea>

<script type="text/javascript">
function removeDefaultText(el){
  el.value='';
  el.onclick=null;
}
</script>

答案 1 :(得分:1)

你可能想要的是这个,对吧?

  • 当页面首次加载且没有用户提供的值时,会显示“请使用”消息。
  • 当textarea获得焦点时,“请使用”消息应该消失。 (也许你想等到输入什么东西;无论如何。)
  • 当textarea 失去焦点时,如果用户留下空<textarea>,则应返回“请使用”消息。
  • 提交表单时,必须检查<textarea>是否仍为空(显示“请使用”消息),如果是,请将其禁用或清除值。

我要做的是让“焦点”和“模糊”处理程序保持状态指示器以明确跟踪元素的状态,而不是依赖于对“请使用”消息进行文本比较。具体如何做到这一点取决于你编写事件处理程序的方式,但它可能看起来像这样:

function setupTextareaHandlers() {
  var txta = document.getElementById("yourTextArea");
  var empty = !txta.value;
  txta.onfocus = function() {
    if (empty) txta.value = '';
  };
  txta.onblur = function() {
    if (!txta.value) {
      empty = true;
      txta.value = 'Please use ... ';
    }
  };
}

您也可能在那里设置提交处理程序。

答案 2 :(得分:1)

一个简单的工作脚本

<textarea name="message" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;">
Put anything for default value here
</textarea>

几分钟前就已经提出了X)

实例:http://jsfiddle.net/SRYLg/

答案 3 :(得分:0)

试试这个

<textarea name="message" id="message" rows="9" cols="55" tabindex="9"     onclick="javascript:if(this.value='default.value') this.value =''">
  <?php if(isset($error)) {echo $message;} else {echo "Please use this area for any other information about your enquiry";}?>
</textarea>

答案 4 :(得分:0)

以下是jsfiddle

HTML:

<textarea name="message" id="message" rows="9" cols="55" tabindex="9">default message</textarea>

<head>标记内的JavaScript位置:

<script type="text/javascript">
    var defaultMsg = document.getElementById("message").value;

    function init() {
        var mytextarea = document.getElementById('message');

        mytextarea.onblur = function() {
            if (this.value == '') this.value = defaultMsg;
        }

        mytextarea.onfocus = function() {
            if (this.value == defaultMsg) this.value = '';
        }
    }

    window.onload = init;
</script>