0

我正在尝试使用 javascript 中的提交功能来提交表单。我不使用提交按钮的原因是我想询问用户是否真的想提交表单。这是代码:

<?php    
if(isset($_POST['submit1']))
die("Submit successfull!");
?>

<!--Javascript submit question.-->
<script type="text/javascript">
function question_submit() {
    if(confirm('Are you sure you want to submit?')) {
        return true;
    }

    else {
        alert('You have not submitted this form');
        return false;
    }
}
</script>

<!--The form-->
<form action='test.php' method='POST'>
<input type='button' name='submit1' value='Submit' onClick="if(question_submit()) { this.form.submit(); }" />
</form>

结果:弹出窗口效果很好,它只是不想提交表单,所以“提交成功!” 永远不会出现。

当我向页面添加真正的提交按钮时,甚至没有显示该消息。就像 POST 数据不起作用。但是当我为提交按钮添加一个 PHP 代码和 die-function 时,事情会起作用并且“REal Submit Works”会出现,这很奇怪,因为按钮代码是第一位的。

<?php
if(isset($submit1))
die("Submit successfull!");
if(isset($_POST['realsubmitbutton']))
die("REal Submit Works");
?>

我还尝试将 onClick 更改为仅包含 javascript 提交功能。像这样:onClick="this.form.submit();"。但这也行不通。所以我的问题是,代码有什么问题,为什么它不起作用?

按钮不能通过 POST 发送它的值吗?

4

5 回答 5

1

问题是您正在通过onclick处理程序提交表单。这意味着,按钮不会作为提交的一部分被按下。

您可以true从该函数返回以获得您想要的行为。

但实际上,这是一个坏主意。我们中的许多人更喜欢在表单字段上简单地按 Enter,而不是单击提交。在您的表单处理程序上,只需检查即可!empty($_POST)。将您的“您确定”功能作为onsubmit表单的操作。

于 2012-04-15T22:54:19.067 回答
0

直接在表单上使用“onSubmit”事件而不是单击按钮。如果您实际上不想提交,则返回“false”。

于 2012-04-15T22:55:46.413 回答
0

修改您的函数,使其获得对表单的引用并调用它的 submit() 方法:

function question_submit() {
    if(confirm('Are you sure you want to submit?')) {
        document.getElementById("myForm").submit();
        return true;
    } else {
        alert('You have not submitted this form');
        return false;
    }
}

此外,更新表单 HTML 以使表单具有 id,并修改您的 HTML 按钮,使其调用 question_submit() 函数。将实际业务逻辑留给函数以保持 HTML 干净。最后,确保你的属性都是小写的。这不应该影响功能,但使用小写属性名称更简洁:

<form action='test.php' method='POST' id='myForm'>
    ...
    <input type='button' name='submit1' value='Submit' onclick="question_submit();" />

</form>
于 2012-04-15T23:05:57.037 回答
0

仅当输入为提交类型时,返回true或才有效。false所以,你应该改变

<input type='button' name='submit1' value='Submit' onClick="if(question_submit()) { this.form.submit(); }" />

为了

<input type='submit' name='submit1' value='Submit' onClick="if(question_submit()) { this.form.submit(); }" />

使用您的功能,它只会在用户接受时提交。或者,你可以使用

<form action='test.php' method='POST' onClick="return question_submit()">
  <input type='submit' name='submit1' value='Submit' />
</form>
于 2012-04-15T23:10:03.867 回答
0

我已阅读您所有的答案并完成了代码。它现在可以同时单击按钮或按 Enter 键。javascript 以任何一种方式正确运行,并且表单被提交。这是代码:

<?php
if(!empty($_POST['justaname']))
die("Submit successfull!");
?>

<!--Javascript submit question.-->
<script type="text/javascript">
function question_submit() {
    if(confirm('Are you sure you want to submit?')) {
        document.getElementById("myform").submit();
    }

    else {
        alert('You have not submitted this form');
    }
}
</script>

<!--The form-->
<form action='test.php' method='POST' id="myform" onSubmit="event.preventDefault(); question_submit();">
<input type="text" name='justaname' />
<input type='button' name='submit1' value='Submit' onClick="question_submit()" />
</form>

感谢所有答案,并希望这对某人有所帮助。

于 2012-04-18T12:07:03.930 回答