我试图用jquery在textarea字段中设置一个值,代码如下:

$("textarea#ExampleMessage").attr("value", result.exampleMessage);

问题是,一旦这段代码执行,它不改变文本区域的文本?

然而,当执行警报($("textarea#ExampleMessage").attr("value")),新设置的值返回?


当前回答

你找过瓦尔吗?

$("textarea#ExampleMessage").val(result.exampleMessage);

其他回答

接受的答案对我来说是可行的,但这是在我意识到必须在页面加载完成后执行代码之后。在这种情况下,内联脚本不起作用,我猜是因为#my_form还没有加载完成。

$(document).ready(function() {
  $("#my_form textarea").val('');
});

只需使用这段代码,你将永远有值:

Var t = $(this); Var v = t.val() || t.html() || t.text();

所以它会检查val()并设置它的值。如果val()得到一个空字符串,NULL, NaN o.s.,它将检查html(),然后检查text()…

使用$("textarea#ExampleMessage").html('任何你想放在这里');可能是一种好方法,因为.val()在使用数据库中的数据时可能会出现问题。

例如:

数据库字段description的值为asjkdfklasdjf sjklñadf。在这种情况下,使用.val()为textarea赋值可能是一项乏味的工作。

文本区域没有值。jQuery .html()在这种情况下工作

$("textarea#ExampleMessage").html(result.exampleMessage);

当我在页面中使用JQuery v1.4.4时,这两种方法都不起作用。当将JQuery v1.7.1注入到我的页面时,它终于工作了。所以在我的例子中,是我的JQuery版本导致了这个问题。

id ==> textareaid

======================

var script1 = document.createElement("script");
script1.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js";
document.body.appendChild(script1);

var script2 = document.createElement("script"); 
script2.type = "text/javascript"; 
script2.innerHTML = "var $jq171 = $.noConflict();"; 
document.body.appendChild(script2);

$jq171('#textareaid').val('xxx');