用于文本区域的 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&lt;textarea&gt; 之间有一个空格,这应该是原因 【参考方案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 浮动标签与滚动输入重叠

jQuery / JS 获取文本区域的滚动条高度

实现可调整大小的文本区域?

使用 jQuery,我如何强制访问者滚动到文本区域的底部以启用提交按钮?

从 Jquery Ajax 调用中设置 CodeMirror 文本区域的值