我的要求是根据条件填充文本区域。
- 我从数据库中检索签名。
- 如果签名存在,则用值填充文本区域。
- 如果没有签名,则文本区域应包含:
- 输入签名并在文本区域内单击,预填充的 TETXT 应消失。
- 如果用户未输入任何文本并在区域外单击,预填充的文本应返回到文本区域中。
我的代码不完整,但作为一个开始:
<textarea name="signature"
style="width:95%"
rows="10"
onclick="document.mailForm.signature.value='';">
<c:choose>
<c:when test="${signature} == '' ">
<c:out value="${signaturePrefix}" />
</c:when>
<c:otherwise>
<c:out value="${signature}" />
</c:otherwise>
</c:choose>
</textarea>
谢谢。
对于数据库部分,您应该粘贴到目前为止编写的代码/逻辑。对于文本出现/消失,您可以使用一些jQuery水印插件:
- http://code.google.com/p/jquery-watermark/
- http://remysharp.com/2007/01/25/jquery-tutorial-text-box-hints/(演示)
仅当"value"为空字符串时才执行单击事件。然后,在处理程序函数结束时,删除事件,以便用户不会丢失所有输入的文本。
function changeContent(element,type){
element.innerHTML="";
element.removeEventListener(type,changeContent,false);
}
<textarea name="signature" style="width:95%" rows="10"
<c:choose>
<c:when test="${signature} == '' ">
onclick="contentChange(this,'click');">
<c:out value="${signaturePrefix}" />
</c:when>
<c:otherwise>
">
<c:out value="${signature}" />
</c:otherwise>
</c:choose>
</textarea>
这在IE中不起作用,因为它使用detachEvent
。我建议使用一个框架来使这种方法具有最少的头发拉动。