带有按钮的Javascript提交功能将不起作用


Javascript submit-function with button won't work

>我正在尝试使用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 för 提交按钮时,事情就会起作用,并且会出现"REal 提交作品",这很奇怪,因为按钮代码是第一个。

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

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

按钮不能通过开机自检发送它的价值吗?

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

您可以从该函数返回true以获取所需的行为。

真的,这是一个坏主意。 我们中的许多人更喜欢简单地在表单字段上按回车键,而不是单击提交。 在您的表单处理程序上,只需选中!empty($_POST)即可。 将您的"您确定吗"功能作为表单的onsubmit操作。

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

修改你的函数,让它得到对表单的引用并调用它的 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>
返回的

truefalse仅在输入类型为提交时有效。所以,你应该改变

<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>

我已经阅读了您的所有答案并完成了代码。现在,单击按钮或按 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>

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