jquery对话框 - 外部链接的javascript无法正常工作

时间:2012-08-06 17:25:23

标签: javascript jquery jquery-ui-dialog

我正在尝试创建一个对话框,其中加载一个外部php文件,其中包含一个表单,该表单要求提供信息,包括使用jQuery datepicker的日期和javascript代码,以检查在提交之前是否填写了所有字段。我有正确弹出的对话框但是外部php文件中的javascript不起作用(日历没有弹出,表单验证检查不起作用)。我正在使用外部php文件,因为我有链接设置传递一个变量来填写表单的一个部分。我不确定这些信息是否有用,但是在普通窗口链接中加载php文件的效果非常好,只有当它在对话框中时,javascript才能正常工作。

以下是我对话框的脚本:

<script type="text/javascript">
$(document).ready(function() {
    $('#order a').each(function() {
        var $link = $(this);
        var $dialog = $('<div></div>')
        .load($link.attr('href') + ' #content')
        .dialog({
            autoOpen: false,
            title: $link.attr('title'),
            width: 500,
            height: 400
        });

        $link.click(function(){
            $dialog.dialog('open');
            return false;
        });
    });
});
</script>

这是弹出对话框的代码:

<div id="order">
    <a href="package.php?code=NY1" title="Package Booking"><img src="images/order.png"></a>
</div>

php文件中的javascript代码和表单:

<head>
<script type="text/javascript">
$(function(){
            // Datepicker
            $('#pdate').datepicker({
                inline: true,
                minDate: 0,
            });
</script>
<script type="text/javascript">
function packageValidator(){
    var pdate = document.getElementById('pdate');
                    if(notEmpty(pdate, "Please enter a departure date.")){
                        return true;
                    }

    return false;
}
function notEmpty(elem, helperMsg){
    if(elem.value.length == 0){
        alert(helperMsg);
        elem.focus();
        return false;
    }
    return true;
}
</script>
</head>
<body>
<div id="content">
<form action="send_package.php" method="post" onsubmit='return packageValidator()' >
        <table>
          //Form Information
            <tr>
                <td><input id="pdate" name="pdate" type="text"></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="Submit" /></td>
            </tr>
        </table>
</form>
</div>
</body>

1 个答案:

答案 0 :(得分:0)

我从未见过像这样的设置。不确定是否可以发布到只包含javascript的页面。 在包含表单的页面上,您必须将PHP文件中的所有javascript抛出到外部.js文件中并添加

<script src="myjavascript.js"></script>

到包含表单的页面。

此外,当您将javascript放在外部文件中时,请删除标记。 然后,您可以在表单中运行验证,并调用在对话框中呈现链接的函数。