0

我一直在尝试用 PHP 解决一个恼人的行为(我认为..)。也许你们中的一些人遇到过同样的事情并有一些想法。我有一个 html 表单,我使用了一个带有 onClick 事件的元素,该事件调用了一个 javascript 函数。处理完脚本的内容后,我执行 form.submit() 指令。它基本上检查常见的事情,如字段长度等。

现在我的问题是,当我使用输入类型按钮时,我将其名称设置为 submit1,并且只是为了运行一个小测试,我设置了<form id="register" action="<?php echo($PHP_SELF) ?>" method="post">

然后我放了:

        <?php

if (isset($_POST["submit1"])) {
    echo "Submit button was pressed";
    die();

}

?>

但是,即使我的输入按钮的名称是 submit1,我也从未看到该消息。然后我将输入类型更改为提交,然后单击提交,我会看到消息,但唯一的问题是,即使我的 javascript 函数在表单中发现任何错误,在警报框上单击确定后,表单仍然继续. 它只在提交类型=提交时这样做。

如果有人有兴趣,

我的按钮:第一次尝试:

<input type="button" name="submit1" class="submit" value="Register"      
onclick="validateFields()"  />

第二次尝试:

<input type="submit" name="submit1" class="submit" value="Create Account!"     
onclick="validateFields()"  />
4

3 回答 3

1

要提交表单,输入字段的类型必须是submit,而不是button

<input type="submit" name="submit1" class="submit" value="Create Account!"     
onclick="validateFields()"  />

你也可以这样做:

<button type="submit" name="submit1" class="submit" onclick="validateFields()">
Create Account! </button>

并且,为了避免您的表单在出现错误时被提交,您可以返回 false:

function validateFields() {
    //do validation
    if(failed) {
        return false;
    }
}
于 2013-09-08T06:19:53.760 回答
1

因为java script问题可能是您没有提出return false这就是表单以任何方式提交的原因。

if(a.value == ""){
alert("Name is empty");
return false; // this will prevent your form to be submit if condition fails
}

button和之间的区别在于,submitsubmit正在提交 form( posting form),因此PHP有资格通过,$_POSTbutton如果表单没有提交,那么您无法在其他页面上获取值,而不是使用Ajax.

类似的问题在这里

于 2013-09-08T06:25:00.173 回答
0

谢谢大家,我修好了:)。

我将输入类型更改为按钮,并更改了我的 onclick="function(); return false"

在我原来的 JS 代码中,我添加了: document.getElementById('myFormId').submit();

现在我的 JS 代码运行并且在所有错误都修复之前它不会提交它。谢谢你。我犯了一个愚蠢的错误。

于 2013-09-08T06:37:29.763 回答