用于文本区域的 jQuery this()?
Posted
技术标签:
【中文标题】用于文本区域的 jQuery this()?【英文标题】:jQuery this() for textarea? 【发布时间】:2011-04-11 17:15:19 【问题描述】:嘿!另一个小问题(这不是 jQuery 中的错误吗?)。
我有一个这样的文本区域:
<textarea>Something</textarea>
我想在点击后删除“某物”,所以:
$("textarea").click(function()
$(this).text("");
);
到目前为止还可以。仅当我的文本区域中有“某事”时,我想更改“某事”文本时出现问题:
$("textarea").click(
function()
if ($(this).text() === "Something")
$(this).text("");
);
它适用于所有不同的输入,但不适用于 textarea。如果没有“if”循环,它也能很好地工作,那么这里发生了什么? :)
非常感谢!
编辑
好的,这是我的“真实代码”:
$(".inp").click(
function()
if($(this).val() === "Text" || $(this).val() === "Name" || $(this).val() === "Mail" || $(this).val() === "Site" )
$(this).val("");
);
html:
<form>
<fieldset>
<input type="text" name="name" class="inp" value="Name" /> <br />
<input type="text" name="email" class="inp" value="Mail" /> <br /> <input type="text" name="site" class="inp" value="Site" />
<textarea rows="12" name="text" class="inp">Text </textarea>
</div>
它适用于所有输入,除了 textarea。
【问题讨论】:
Text
和 <textarea>
之间有一个空格,这应该是原因
【参考方案1】:
使用.val("")
而不是.text("")
如果您使用 javascript 操作 textareas 内容,请使用 value
属性...节点内容仅用于 HTML 表示。
【讨论】:
我试过了,vals 适用于其他输入,但不适用于我的 textarea ;/【参考方案2】:您确定 textarea 中没有任何空格(或换行符)吗?像这样:
<textarea>
Something
</textarea>
如果是这种情况,您可以将 .trim()
附加到 $(this).text()
,这将删除前导和尾随空格。
我在上面创建了example,它可以工作。其他:我建议使用.focus()
而不是.click
,因此如果用户使用键盘进行导航,它仍然有效。 Here is an example with .focus()
【讨论】:
ZOMG,空白!我好跛脚。对不起,对不起,对不起! :) 你是个天才 :) 有时您需要另一双眼睛来发现此类错误。我很高兴能帮上忙。【参考方案3】:“文本”之后和“”之前有空格。 `$(this).val() 适用于 textarea,但 textarea 中的文本是“Text”,而不是“Text”。
JSFiddle Example
【讨论】:
以上是关于用于文本区域的 jQuery this()?的主要内容,如果未能解决你的问题,请参考以下文章
Javascript / jQuery 获取我正在输入的文本区域的 id [重复]
用于文本区域的 Bootstrap 5 浮动标签与滚动输入重叠