douren1928 2012-05-24 11:20
浏览 77
已采纳

如何使用iframe在模态窗口中显示内容?

I have a simple application here (QandATable2.php) where when the user clicks on the plus button, it will open a modal window and it displays the details which is stored in another page (previousquestions.php).

Now the problem I have is that if you straight away click on the "Search" button when the textbox is blank, you will see that it loads the page on its own page, displaying the details on that page. This is incorrect.

What I want it to do is that if the user has clicked on the search button, then I want the details to be stored within the modal window, not on its own whole page. I have heard that the best solution to use is by using an iframe. So does anyone know how this can be acheived using an iframe?

The modal window I am using is known as SimpleModal and it's website is here

Below is the QandATable2.php code where it displays the plus button and where it opens the modal window, linking the content of the modal window to the previousquestions.php page:

<script type="text/javascript">          
    function plusbutton() { 
        // Display an external page using an iframe 
        var src = "previousquestions.php"; 
        $.modal('<iframe src="' + src + '" height="100%" width="100%" style="border:0">');
        return false;
    }   
    function closewindow() {     
        $.modal.close(); 
        return false;
    }         
</script>

<h1>CREATING QUESTIONS AND ANSWERS</h1>
<table id="plus" align="center">
    <tr>
        <th>
            <a onclick="return plusbutton();">
                <img src="Images/plussign.jpg" width="30" height="30" alt="Look Up Previous Question" class="plusimage"/>
            </a>
            <span id="plussignmsg">(Click Plus Sign to look <br/> up Previous Questions)</span>
        </th>
    </tr>
</table>

Below is the previousquestions.php code, where it displays the details in the modal window and where the search feature is stored:

<?php
    foreach (array('questioncontent') as $varname) {
        $questioncontent = (isset($_POST[$varname])) ? $_POST[$varname] : '';
    }
?>

<div id="previouslink">
    <button type="button" id="close" onclick="return closewindow();">Close</button>
    <h1>PREVIOUS QUESTIONS</h1>

    <p>Search for a previous question by entering in a phrase in the search box below and submitting the phrase</p>

    <form action="previousquestions.php" method="post">
          <p>Search: <input type="text" name="questioncontent" value="<?php echo $questioncontent; ?>" /></p>
          <p><input id="searchquestion" name="searchQuestion" type="submit" value="Search" /></p>
    </form>
</div>

<?php 
    //...connected to DB
    if (isset($_POST['searchQuestion'])) {
        $questionquery = "SELECT QuestionContent FROM Question
              WHERE(QuestionContent = '".mysql_real_escape_string($questioncontent)."')";
        if (empty($questioncontent)){
            echo "Please enter in a phrase in the text box in able to search for a question";
        }
?>
  • 写回答

2条回答 默认 最新

  • dpbl91234 2012-05-24 12:13
    关注

    Taken from the examples:

    // Display an external page using an iframe
    var src = "http://365.ericmmartin.com/";
    $.modal('<iframe src="' + src + '" height="450" width="830" style="border:0">', {
        closeHTML:"",
        containerCss:{
            backgroundColor:"#fff",
            borderColor:"#fff",
            height:450,
            padding:0,
            width:830
        },
        overlayClose:true
    });
    

    To suit your needs:

    function plusbutton() {
        // Display an external page using an iframe
        var src = "previousquestions.php";
        $.modal('<iframe src="' + src + '" height="450" width="830" style="border:0">', {
            closeHTML:"",
            containerCss:{
                backgroundColor:"#fff",
                borderColor:"#fff",
                height:450,
                padding:0,
                width:830
            },
            overlayClose:true
        });
    }
    

    And let the form do its job as usual (no event handler here) or if that does not work, try adding target="_self" in the form's attributes, this ensures that the page opens inside the iframe.

    Otherwise, instead of iframes, I would suggest using ajax and load them inside a normal div then, but it's up to you.

    UPDATE: To answer your questions in the comments:

    Problem 1: The modal box is set to 100% hieght and 50% width so I set the iframe to same, now width is perfect but hieght of iframe doesn't go down to 100%.

    Try style="width:100%;height:100%;" instead of width="100%" height="100%" (I think it does not work to put percentage values in these attributes)

    UPDATE 2: It seems the problem is not here, but with the .simplemodel-data class that contains the iframe, a "hacky" solution is to add to your css: .somplemodel-data {height: 100%;}. Check the docs to see if there is something "official" about that.

    Problem 2: I have a close button where if the user clicks on the "close" button, it closes the modal window, but now it doesn't close the modal window, it keeps stating it is undefined.

    The close button will not work, because the closewindow function is defined in the parent window while you are calling it from inside the iframe. To overcome this you have 2 solutions: 1. either you put the close button outside the iframe and keep the rest as it is 2. or you call the parent window's closewindow function.

    For 1: $.modal('<button type="button" id="close" onclick="return closewindow();">Close</button><iframe src="' + src + '" style="border:0;width:100%;height:100%;">'); in "QandATable.php"

    For 2: <button type="button" id="close" onclick="return parent.closewindow();">Close</button> in "previousquestions.php" (or maybe replace parent by top, I think it's the same)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?