Jquery UI 和 ASP.NET 回发后失败

本文关键字:失败 NET UI ASP Jquery | 更新日期: 2023-09-27 18:35:42

我有一个带有更新面板的 asp.net Web 表单应用程序。它也在列表视图中,我不知道这是否重要。

我有以下Javascript。

<script lang="javascript" type="text/javascript">
function pageLoad(sender, args)
{
$(document).ready(function () {
$('textarea.epop').live('click', test);
});
function tes(event)
{
        var btn = $(this);
        alert(btn.val());
        $('#editortext').val(btn.val());
        var dialog = $('#edialog').dialog({
          modal: true,
          width:'auto',
          resizable: false,
          buttons: {
            'OK': function() {
              alert($('#editortext').val());
              alert(btn.val());
              btn.val($('#editortext').val());
              $('#editortext').val("");
              $(this).dialog('close');
              return false;
            }
          }
        });
        // Move the dialog back into the <form> element
        dialog.parent().appendTo(jQuery("form:first"));
        $('#edialog').dialog('open');
  return false;
}
}
</script>

然后我在 html 正文中有这个。

<div id="edialog" title="Edit SQL" style="display: none">
    <label for="editortext">
        SQL Query:</label>
    <textarea rows="20" cols="100" id="editortext" class="editortext"></textarea>      
</div>

然后在我的列表视图中的一个列表项中,该列表项位于更新面板中。我有。。

<asp:TextBox ID='txtSQLQuery' CssClass="epop" TextMode="multiline" Columns="50" Rows="5" runat="server" Text='<%# Eval("SQLQuery") %>' />

代码第一次完美运行,无需回发。但是假设我更改了选择,然后发生了自动回发...然后代码不再设置文本。当您单击"确定"时。使用警报,我可以看到它实际上仍然引用旧值,而不是似乎调用单击的新当前显示值。

在这一点上,我被难住了。

Jquery UI 和 ASP.NET 回发后失败

如果你的控件在updatepanel中,并且更新面板设置为updatemode ="condicional",你可能必须从服务器端代码调用updatePanel.update()来更新值。

经常发生的另一件事是更新面板和jquery不是最好的朋友,所以最好像这样编写或初始化你的代码:

$(document).ready(function () {
     $('textarea.epop').live('click', function(e){
             test();
       });
});

回发后再次注册

   var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_endRequest(function() {
      $('textarea.epop').live('click', function(e){
             test();
       });
    })