使用按钮的Javascript提交功能将无法正常工作

时间:2012-04-15 22:52:21

标签: php javascript html

我正在尝试使用javascript中的submit-function提交表单。我没有使用提交按钮的原因是我想询问用户是否真的想提交表单。这是代码:

<?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代码和模具功能时,提交按钮就可以了,并且“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发送它的值吗?

5 个答案:

答案 0 :(得分:1)

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

您可以从该功能返回true以获得所需的行为。

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

答案 1 :(得分:0)

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

答案 2 :(得分: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>

答案 3 :(得分:0)

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

答案 4 :(得分: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>

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