1

我已经创建了一个simpleModal弹出窗口。我想将弹出窗口上的文本输入中的值返回到父页面上的 asp 文本框。

我已经阅读了所有与此类似的示例,但没有一个回答我的问题。

我的弹出窗口是一个带有文本输入的简单 aspx 页面。这是代码:

JavaScript

  $(document).ready(function() {
    $("a#lookup").click(function () {
      //Load the Lookup page as a modal popup..
      $.modal('<iframe src="TestPopup.aspx" height="200" width="450" style="border:5">', {
        onOpen: function (dialog) {
            dialog.overlay.fadeIn('slow', function () {
                dialog.container.slideDown('100', function () {
                    dialog.data.fadeIn('fast');
            }); 
          }); 
        },
        preventDefault: true,
        containerCss: {
          backgroundColor: "#fff",
          borderColor: "#aaa",
          height: 530,
          padding: 5,
          width: 880,
          escClose: false
        },
        closeHTML: "<a href='#'>Close</a>",
        appendTo: 'form',
        persist: true,
        overlayClose: true,
        onClose: function (dialog) {
          var result = dialog.data.find("#msgText").val();
          $('#txtLookupReturn').attr('value', result);
          dialog.data.fadeOut('200', function () {
            dialog.container.slideUp('200', function () {
              dialog.overlay.fadeOut('200', function () {
                $.modal.close();
              }); 
            });
          });
        }
      }); 
    });    
  });   

TestPopup.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestPopup.aspx.cs" Inherits="WebServicesTest.TestPopup" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">; 
<html xmlns="w3.org/1999/xhtml">; 
<head runat="server"> 
  <title></title> 
</head> 
<body> 
  <form id="form1" runat="server"> 
  <div> 
    <input id="msgText" type="text" value="I love jQuery!" /> 
  </div> 
  </form> 
</body> 
</html> 

这是不起作用的代码行:

var result = dialog.data.find("#msgText").val();

$('#txtLookupReturn').attr('value', result);

当我尝试获取 的值时#msgText,没有错误也没有值。感谢任何帮助!

4

1 回答 1

2

我认为您的选择代码应该是这样的:

$("iframe[src='TestPopup.aspx']").contents().find("#msgText").val();

在 iframe 中选择元素有一些复杂性,在这个问题这个博客文章中都有解决。 这个问题讨论了 JavaScript 和 iframe 的权限。我不知道你的页面是如何组织的,所以我不知道你是否会遇到同源策略的问题,但无论如何阅读都是一件好事。

更新

我越看你的弹出式 HTML,我就越觉得你不需要使用iframe. 当我使用 SimpleModal 时,我通常将我的对话框 HTML 放在一个不可见的<div>. 这iframe将不必要地缓慢并增加您的服务器流量。如果您需要从服务器加载值,您可能希望将其保留为iframe. 但是,如果您只需要用户提供值,请将对话框表单作为 HTML 包含在您的页面上。

于 2012-06-05T14:16:15.390 回答