从jQuery Dialog中加载的页面中检索选定的值

时间:2012-03-30 05:44:35

标签: php jquery html jquery-ui

我正在尝试从通过jQuery Dialog加载的页面中检索所选值。

以下是详细信息 - 一旦'SelectTeam.php'页面加载到Dialog(已通过一些默认选择),一旦用户点击对话框的'OK'按钮我想要检索新的选择,因为用户可以覆盖默认选择&然后按OK。按“确定”按钮后如何获得新选择。

父页面 -

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title>jQuery UI Dialog Example</title>
    <link type="text/css" href="css/smoothness/jquery-ui-1.8.18.custom.css" rel="stylesheet" /> 
    <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
    <script type="text/javascript" src="js/jquery-ui-1.8.18.custom.min.js"></script>
    <style>
            body { font-size: 62.5%; }
    </style>
    <script type="text/javascript">
        function openDialog(url) {
           $("#somediv").load(url).dialog({
                                            modal:true,
                                            title: 'Team Select',
                                            width: 300,
                                            height: 400,
                                            autoOpen: true,
                                            resizable: false,
                                            buttons: {
                                                "OK": function() {
                                                    $(this).dialog("close");
                                                },
                                                "Cancel": function() {
                                                    $(this).dialog("close");
                                                }
                                            }
                                            });
        } 
    </script>
</head>
<body>
    <div id="somediv"></div>
    <a href="#" onclick="openDialog('SelectTeam.php?TeamIds=2,4,13');">Dialog</a>
</body>
   </html>

jQuery对话框中加载的子页面 -

 <?php

$lstTeamId = array();

if (isset($_GET['TeamIds']))
{
$lstTeamId = explode(',', $_GET['TeamIds']);
}
?>

<!DOCTYPE html>
<html>
<body>
    <form id="frmSelectTeams">

        <table width="100%" border="1">
             <tr>
                <th align="center"><input type="checkbox" disabled="disabled"/></th>
                <th align="center">Team Name</th>
             </tr>

            <?php
            for ($index = 1; $index < 21; $index++)
            {
                echo '<tr>';
                echo '<td align="center"><input type="checkbox" class="test" name="chk' . $index . '" '; if (in_array ($index, $lstTeamId)) { echo 'checked="checked"';} echo ' /></td>';
                echo '<td align="center">Team ' . $index . '</td>';
                echo "</tr>";
            }
            ?>

        </table>
    </form>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

你不能再用新选择的网址再次调用openDialog(url)吗?

buttons: {
   "OK":      function() 
                new_url = 'new_selection_url';
                openDialog(new_url);
              },
   "Cancel": function() {
               $(this).dialog("close");
             }
}
编辑:我不太确定你想要显示的选择。新选择必须在对话框中吗?对话外?

更新:好的,看起来你想把它加载到#somediv。只需再次调用load:

buttons: {
   "OK":      function() 
                new_url = 'new_selection_url';
                $('#somediv').load(new_url);
              },

更新:如果您只想选择一个网址,则必须使用单选按钮。要获取所有选中复选框的值,您可以尝试以下方法:

var urls = [];
$('.test :checked').each(function() {
   urls.push($(this).val());
 });
new_url = urls[0];

如果您使用单选按钮替换复选框,则可以尝试以下操作:

new_url = $('input[name=radioName]:checked', '#frmSelectTeams').val()