提交表单不适用于确认框

submit form not working with confirm box

我正在尝试创建一个动态生成的场景

这是我的 javascript 代码:

        function confirmDelete( varForm ) {
            var r = confirm("Are you sure you wish to delete this entry?");

            if (r == true) {
                document.getElementById("form" + varForm).submit();
            }
        }

这是我的 php/html 代码:

        <form name="form<?php echo $x . $y; ?>" id="form<?php echo $x . $y; ?>" action="/index.php" method="post">
            <a href="#" onclick="confirmDelete(<?php echo $x . $y; ?>); return false;"><p><?php echo $aryClientInfo[$x][1][$y * 3]; ?></p></a>
            <input type="hidden" name="values<?php echo $x; ?>" value="<?php echo ($y * 3) . ',' . ($y * 3 + 1) . ',' . ($y * 3 + 2); ?>">
        </form>

它似乎没有提交表单,我不知道为什么(我已经验证了表单名称和 javascript 函数输入变量匹配)。我已经发现该函数确实被调用并且确认框确实按预期工作。 $x 和 $y 是从 MySQL 数据库生成多个链接的 for 循环的一部分。

你的错误是你传递的 varForm 没有引号,试试这个:

<form name="form<?php echo $x . $y; ?>" id="form<?php echo $x . $y; ?>" action="/index.php" method="post">
            <a href="#" onclick="confirmDelete('<?php echo $x . $y; ?>'); return false;"><p><?php echo $aryClientInfo[$x][1][$y * 3]; ?></p></a>
            <input type="hidden" name="values<?php echo $x; ?>" value="<?php echo ($y * 3) . ',' . ($y * 3 + 1) . ',' . ($y * 3 + 2); ?>">
        </form>

而不是

onclick="confirmDelete(<?php echo $x . $y; ?>); return false;" 

应该是:

onclick="confirmDelete('<?php echo $x . $y; ?>'); return false;"

这是一个没有嵌入 php 代码的有效 jsfiddle,它可能对您有帮助:

https://jsfiddle.net/eq0ggxkf/

<body>
    <form name="form123" id="form123" action="/index.php" method="post">
            <a href="#" onclick="confirmDelete('123'); return false;"><p>some content</p></a>
            <input type="hidden" name="values" value="secret">
    </form>
        hello
</body>
<script>
    function confirmDelete( varForm ) {
            var r = confirm("Are you sure you wish to delete this entry?");

            if (r == true) {
                document.getElementById("form" + varForm).submit();
            }
        }
</script>