0

整个下午,

需要大师的一些技术建议......我知道从表单中删除默认消息的功能,但是发生的问题是在用户最初单击消息区域之后(删除默认值) ,如果他们再次点击消息区域,它会删除他们写的内容!!我想一个例子是,如果他们注意到拼写错误或需要更改部分信息。

一定有办法解决这个问题吗?

文本区域的代码是:

<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>
4

5 回答 5

1

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

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

this.value = ''您可以更改 onclick 以调用执行然后删除 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>
于 2011-03-05T14:43:37.240 回答
1

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

  • 当页面首次加载并且没有用户提供的值时,会显示“请使用”消息。
  • 当文本区域获得焦点时,“请使用”消息应该消失。(也许您想等到输入某些内容;无论如何。)
  • 当 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 ... ';
    }
  };
}

您可能还会在那里设置您的提交处理程序。

于 2011-03-05T14:50:22.110 回答
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/

于 2011-07-14T16:01:01.390 回答
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>
于 2011-03-05T14:46:50.820 回答
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>
于 2011-03-05T14:55:32.237 回答