我有一个HTML5表单,所有使用HTML5表单验证,除了一个字段,它使用ajax在一个常规(不提交)按钮,标签为"提交"
使用ajax的,一旦该字段被验证,它就使用javascript的.submit()
提交表单。在开发中,表单也有一个onsubmit
属性,目前设置为return false;
用于测试。
问题是,我所有的验证(除了reCaptcha),和形式的onsubmit
被完全忽略时,机器人或人使用.submit()
功能从浏览器的开发人员控制台。通过在开发控制台上使用.submit()
函数提交一个空表单,对此进行了测试。
当使用我指定为submit的按钮提交时,表单按照预期完美地工作。我想做的是限制只提交到指定的按钮。
我在网上搜索了一遍又一遍,还是找不到解决这个问题的方法。
我尝试使用onsubmit
属性,包括return false;
,期望表单提交被停止,但事实并非如此。如果我能找出如何用指定的按钮以外的任何东西来阻止提交表单,那么我就可以解决问题的其余部分。禁用js并不是一个真正的选择,因为js只是站点运行所必需的。
下面的表单代码是一个非常精简的版本,它也排除了recaptcha元素和实际验证的元素(出于安全原因)。请原谅代码混乱。
<form method="post" enctype="multipart/form-data" action="example_action_page.php" onsubmit="return false;">
<table>
<tr>
<td>
Name:<span class="required">*</span>
</td>
<td id="name_field">
<input type="text" name="name" id="name" size="40" value="" class="inputWidth" required>
<a class="info" href="javascript:null;">
<img src="/images/tip_small.png" border="0">
<span class="infobox">
How should we address you?
</span>
</a>
</td>
</tr>
<tr>
<td>
Email:<span class="required">*</span>
</td>
<td id="email_field">
<input type="email" name="email" id="email" size="40" value="" class="inputWidth" required>
<a class="info" href="javascript:null;">
<img src="/images/tip_small.png" border="0">
<span class="infobox">
We need this to reply to you.
</span>
</a>
</td>
</tr>
<tr>
<td colspan="2">
<input name="contact_us" id="saveForm" type="button" value="Submit" onclick="return validation_function(element-to-validate);">
<input type="reset" name="reset" value="Reset">
</td>
</tr>
<tr>
</tr>
</table>
</form>
任何帮助都将是非常感激的。
我通过将按钮更改回正确的提交按钮并返回表单来解决这个问题,并显示错误。
<?php
if (!isset($_POST['formName']) and isset($_POST['subTest'])) {
echo "You are not allowed to submit this form, using javascript.";
}
?>
<form method="post" enctype="multipart/form-data" action="example_action_page.php" onsubmit="return false;">
<input type="hidden" id="subTest" name="subTest" value="submitted">
<table>
<tr>
<td>
Name:<span class="required">*</span>
</td>
<td id="name_field">
<input type="text" name="name" id="name" size="40" value="" class="inputWidth" required>
<a class="info" href="javascript:null;">
<img src="/images/tip_small.png" border="0">
<span class="infobox">
How should we address you?
</span>
</a>
</td>
</tr>
<tr>
<td>
Email:<span class="required">*</span>
</td>
<td id="email_field">
<input type="email" name="email" id="email" size="40" value="" class="inputWidth" required>
<a class="info" href="javascript:null;">
<img src="/images/tip_small.png" border="0">
<span class="infobox">
We need this to reply to you.
</span>
</a>
</td>
</tr>
<tr>
<td colspan="2">
<input name="FormName" id="saveForm" type="submit" value="Submit">
<input type="reset" name="reset" value="Reset">
</td>
</tr>
</table>
</form>