Jquery对话框只读取一次textarea值

Jquery对话框只读取一次textarea值,jquery,jquery-dialog,Jquery,Jquery Dialog,我正在使用带有文本区域的对话框。单击ok按钮后,textarea的值将通过ajax发送到服务器。 用户第一次写入textarea时,值被正确读取,但在所有后续操作中,发送的值与第一次相同,就好像用户反复输入相同的字符串一样 function message(url) { var mydiv; mydiv = $(document.createElement('div')); mydiv.html("enter message: <textarea name='messag

我正在使用带有文本区域的对话框。单击ok按钮后,textarea的值将通过ajax发送到服务器。
用户第一次写入textarea时,值被正确读取,但在所有后续操作中,发送的值与第一次相同,就好像用户反复输入相同的字符串一样

function message(url) { 
  var mydiv; 
  mydiv = $(document.createElement('div')); 
  mydiv.html("enter message: <textarea name='message' id='message'/>"); 
  mydiv.dialog(setProps(url));
  mydiv.dialog('open');
}

function setProps(url) {
  return {
    buttons: {
      "ok": function() {
        $.get('/act?url=' + url + '&message=' + $("#message").val().trim(),
          function(data) { 
            $("#content").load('/react?url=' + url); 
          }
        ); 
        $(this).dialog("close"); 
        $(this).dialog("destroy"); 
        // If I use the following all subseq. actions are empty:
        // $("#message").val(''); 
      }
    } 
  } 
} 
函数消息(url){
var-mydiv;
mydiv=$(document.createElement('div');
html(“输入消息:”);
mydiv.dialog(setProps(url));
mydiv.对话框(“打开”);
}
函数setProps(url){
返回{
按钮:{
“ok”:函数(){
$.get('/act?url='+url+'&message='+$(“#message”).val().trim(),
函数(数据){
$(“#内容”).load('/react?url='+url);
}
); 
$(此).dialog(“关闭”);
$(此).dialog(“销毁”);
//如果我使用以下命令,则所有子问题操作均为空:
//$(“#消息”).val(“”);
}
} 
} 
} 

当您创建一个对话框时,它会附加在
的末尾,仅仅因为您正在销毁该对话框并不意味着其中的元素会消失,它们只是返回到它们的位置,或者在这种情况下仍然在
的末尾,您还需要添加这些元素,如下所示:

$(this).dialog("destroy").remove();
function message(url) { 
 $("<div>enter message: <textarea name='message' id='message'></textarea></div>")
   .dialog(setProps(url));
}

function setProps(url) {
  return {
    buttons: {
      "ok": function() {
        $.get('/act', { url: url, message: $.trim($("#message").val()) },
          function(data) { 
            $("#content").load('/react?url=' + url); 
          }
        ); 
        $(this).dialog("destroy").remove(); 
      }
    } 
  } 
} 
否则(当前)您每次都要添加一个新的
#message
元素,并且您看到的是一个典型的重复ID问题,它会获取第一个元素的值(您添加的第一个…从未离开)



总的来说,还有一些问题,例如IEI怀疑,问题是多次尝试添加id='message'的元素(因为id需要是唯一的)。用class='message''替换它可能会解决您的问题。@conqenator-
.val()
仍然会得到第一个元素的值。@Nick:hmmm,使用.last().val()可以解决这个问题,对吗?但是,我想这不是最好的办法。@conqenator-是的,你真的在回避核心问题,总是解决问题,而不是症状。@Nick:是的,非常同意:)即使我来晚了,非常感谢你的提示!在花了整整一个上午调试我的javascript代码后,它解决了我的难题