JQuery的。为什么我不能在textarea中插入html img标签?

时间:2010-06-15 10:22:41

标签: jquery asp.net-mvc textarea

TextArea看起来像:

<textarea id="MessageContent" name="MessageContent"></textarea>

JQuery看起来像:

 $("#insert").live("click", function () {
             var t = "<img width='" + result.width + "' height='" + result.height + "' alt='" + result.descr + "' src='/Images/" + result.message + "' />";
             $("#MessageContent").html($("#MessageContent").html() + t);
             $("#MessageContent").focus();

             $("#backgroundPopup").fadeOut("fast");
             $("#popupContact").fadeOut("fast");
         });      //live

我可以插入简单文本,但不能插入任何HTML标记。

1 个答案:

答案 0 :(得分:3)

您希望在此使用.val()代替.html()来设置<textarea>的值(否则该值未编码或正确使用),如下所示:

$("#insert").live("click", function () {
  var t = "<img width='" + result.width + "' height='" + result.height + "' alt='" + result.descr + "' src='/Images/" + result.message + "' />";
  $("#MessageContent").val($("#MessageContent").val() + t);
  $("#MessageContent").focus();

  $("#backgroundPopup").fadeOut("fast");
  $("#popupContact").fadeOut("fast");
});

你也可以将它缩短一点by passing a function to .val(),如下所示:

$("#insert").live("click", function () {
  $("#MessageContent").val(function(i, val) {
     return val + "<img width='" + result.width + "' height='" + result.height + "' alt='" + result.descr + "' src='/Images/" + result.message + "' />";
   }).focus(); 
  $("#backgroundPopup").fadeOut("fast");
  $("#popupContact").fadeOut("fast");
});