0

我正在尝试将一个简单的 jquery 对话框消息嵌入到表单中。该对话框应该只显示一些附加信息,并且不以任何方式与表单交互,除非通过表单内部的按钮调用。

我的问题如下:如果从表单内部调用对话框,则整个页面会立即刷新,根本不显示对话框并清除所有表单字段。如果按钮在表单之外,一切正常。

对话框内容正在通过如下模板加载:

<script>
$(function() {
    var dlg = $( "#dialog-message" ).dialog({
        autoOpen: false,
        width: '80%',
        closeOnEscape: false,
        modal: true,
        buttons: {
            Ok: function() {
                $( this ).dialog( "close" );
            }
        },
        open: function() {
            // Content laden...
            $("#dialog-message").load('template.html', function() {}).dialog()
        }
    });
    $( "#opener" ).click(function() {
        $( "#dialog-message" ).dialog( "open" );
    });
});
</script>

表单集成:

<form method="post" name="post" action="index.php?site=bewerbung">
  <table width="100%" border="0" cellspacing="1" cellpadding="2" bgcolor="$border">

  ...

  </tr>
    <tr bgcolor="$bg1">
    <td height="25">&nbsp;</td>
    <td><input class="input" type="checkbox" name="rules" id="rules" value="1" /><button id="opener">Regeln</button></td>
  </tr>

</table>
</form>
4

2 回答 2

0

您的按钮提交表单,因此您需要通过 JavaScript 阻止默认按钮操作:

$("#opener").on('click', function(e) {
    dlg.dialog("open");
    e.preventDefault();
});

您没有提到您使用的是什么 jQuery (UI) 版本。我上面的代码适用于较新的版本。这是演示

于 2013-05-19T00:02:02.387 回答
0

一般对于Buttons和Submit-inputs:你可以防止页面的刷新,如果你放置“return false;” 在您的功能结束时。在你的情况下

$( "#opener" ).click(function() {
    $( "#dialog-message" ).dialog( "open" );
    return false;
});
于 2013-05-19T00:24:55.587 回答