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 に答える