在销毁对话框后,JQuery保留旧的输入值

时间:2012-12-22 08:03:46

标签: jquery-ui

我已定义function用于在html中显示一些jqueryui dilaog内容:

function ui_window(title, dialogWidth, content,buttons,className)
{
  $('<div id="window">').html(content).
  dialog({
      title: title,
      show: 'drop',
      hide: 'drop',
      width: dialogWidth,
      buttons: buttons,
      close: function (ev, ui) { $(this).remove(); },
      position: { my: 'center', at: 'center', of: window }
}
   ).addClass(className);
  return false;
}

这是调用上述function的另一个javascript function

function checkForValidCommand()
{
var content = getInnerHTML("#checkForValidCommand");
var myFunc = function ()
{
    var pensionerID = $('#txtID').val();
        alert(pensionerID);
        $(this).dialog('destroy');
    }
    else
        $('#txtID').focus();
}
var buttons = [{ text: 'OK', click: myFunc}];
ui_window("Pensioner", 410, content, buttons);

}

当我第一次拨打“checkForValidCommand”并且input value再次拨打textbox并按下确定后,我会收到一条警告,其值为textbox。然后,当我再次拨打function并按“确定”而不将任何内容投入textbox时,我仍然会使用旧alert获取value。我的代码有什么问题?

编辑:这是html内容,如果你想看到:

<table>
  <tr>
    <td align="right">
       <label>
           Insert the pensioiner's ID:
       </label>
    </td>
    <td>
     <input id="txtID" type="text" onkeydown="return onlyNumbers(event);" maxlength="8"/>
    </td>
  </tr>
</table>

1 个答案:

答案 0 :(得分:1)

好的。我很高兴自己回答这个问题。所以问题是每次我打开一个带有文本框的新jquery对话框时,文本框的值就是第一个对话框中的值。不知怎的,jquery保留了旧的价值。即使放$(this).dialog('destroy');也没有解决问题。(为什么这个命令不能完全删除对话框是另一回事)。然后我突然想起了$('#id')

的工作原理

It goes and selects the first matching element with the specified id.

这是必要的线索。我确信以前的对话框没有从正文中删除。当我检查身体时,我发现我是对的。所有的对话都在那里,在身体里。我尝试了很多方法来彻底删除div并停在我找到的唯一一个工作上。我做的是在显示对话框之前输入以下代码:

 $('body').find("#window").remove();

所以显示jquery对话框的包装器函数现在看起来像这样:

function ui_window(title, dialogWidth, content,buttons,className)
{
  $('body').find("#window").remove();
$('<div id="window">').html(content).
  dialog({
      title: title,
      show: 'drop',
      hide: 'drop',
      width: dialogWidth,
      buttons: buttons,
      position: { my: 'center', at: 'center', of: window }
}
   ).addClass(className);
  return false;
}

现在一次只有一个对话框。快乐jQuerying。