【问题标题】:Submit form after confirming jquery modal popup确认jquery modal popup后提交表单
【发布时间】:2014-11-12 04:43:28
【问题描述】:

我已经为此花费了 5 个小时,但无法使其正常工作。我只想提交一个表单并让它通过 jquery ui 弹出窗口要求确认删除,当它被确认时,它会继续提交表单并转到 delete.php。

为简单起见,我已将其删除:

<html>
<head>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/black-tie/jquery-ui.min.css" rel="stylesheet">
<script src="http://code.jquery.com/jquery-2.1.1.js" type="text/javascript"></script>
<script src="http://code.jquery.com/ui/1.11.1/jquery-ui.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#formDelete').submit(function(e){
        e.preventDefault();
        $('#dialog').dialog('open');
    });
    $('#dialog').dialog({
    autoOpen: false,
    modal: true,
    buttons: {
            "Confirm": function() {
                $('#formDelete').submit();  
            },
            "Cancel": function() {
                $(this).dialog("close");
            }
    }
});    
});
</script>
</head>
<body>
<div id="dialog">
<p>Are you sure you want to delete?</p> 
</div>
<form id="formDelete" name="formDelete" action="delete.php" method="POST" >
    <input name="id" type="hidden" value="1">
    <input name="submit" type="submit">
</form>
</body>
</html>

我单击“是”按钮,但没有任何反应。我尝试将提交 id 更改为与表单相同的内容,但读取它只会循环所有内容。

【问题讨论】:

    标签: javascript php jquery html forms


    【解决方案1】:

    我无法雄辩地说明原因,但我觉得它很模糊,如果你这样使用它:

    <input name="submit" type="submit">
                 ^^ input name submit
    
    $('#formDelete').submit();
                      ^^
    

    我不知道为什么会发生冲突,所以永远不要为按钮命名"submit",而只是在名称上附加一个数字以避免冲突。

    这里试试这个:

    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.1/themes/smoothness/jquery-ui.css">
    <div id="dialog">
    <p>Are you sure you want to delete?</p>
    </div>
    <form id="formDelete" action="delete.php" method="POST">
        <input name="id" type="hidden" value="1" />
        <input name="submit1" type="submit" />
    </form>
    <script src="http://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script>
    <script src="//code.jquery.com/ui/1.11.1/jquery-ui.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {
    
        $('input[name="submit1"]').on('click', function(e){
            e.preventDefault();
            $('#dialog').dialog('open');
        });
    
        $('#dialog').dialog({
            autoOpen: false,
            modal: true,
            buttons: {
                "Confirm": function(e) {
                    $(this).dialog('close');
                    $('#formDelete').submit();
    
    
                },
                "Cancel": function() {
                    $(this).dialog('close');
                }
            }
        });
    });
    </script>
    

    旁注:其实我之前有点偶然发现这种问题,但我再也找不到了(实际上正确的答案和解释在那里,但我在这里找不到它)。

    编辑:啊,这里是:

    补充说明:

    表单及其子元素不应使用与表单属性冲突的输入名称或 ID,例如 submitlength >method。名称冲突可能会导致令人困惑的失败。

    http://api.jquery.com/submit/

    【讨论】:

    • @ChadPriddle 确实很奇怪的行为,很高兴它有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    相关资源
    最近更新 更多