1

我有一个 html 表单,我只想从表单外部的按钮提交。我正在使用 javascript 执行一些验证,并且不希望表单提交,除非我的 javascript 函数成功。我发现如果我在表单内有按钮,无论使用 javascript,它都会提交,但如果我在用户按下输入时将它放在表单外,它只会提交表单。如何强制输入执行按钮 javascript 而不是提交?

<form name="form1" action=<?$_SERVER["PHP_SELF"].'?'.$_SERVER["QUERY_STRING"]?> method="post">

<input type="text" maxlength="5" size="5" name="frmZip" value="">

<input type="hidden" name="frmLat" value="200">
<input type="hidden" name="frmLng" value="200">

<input type="submit" disabled="disabled" style="display:none" />
</form>
<button type="button" id="GetCoordinates" onclick="doClick();">Find Stores</button>

编辑:找到我的解决方案。我从

</form>
<button type="button" id="GetCoordinates" onclick="doClick();">Find Stores</button>

<input type="button" name="frmSubmit" onclick="doClick();" value="Submit">
</form>

这阻止了按钮提交表单,所以我通过 javascript 在我的 doClick() 中提交了它。

编辑 2:虽然这似乎工作了一段时间,但它已经停止捕捉回车键击。我将按钮更新为:

<input type="submit" name="frmSubmit" onclick="return doClick();" value="Find Stores">

并且总是在 doClick() 中返回 false。这使我可以在一切执行完毕后通过 javascript 提交表单。

4

2 回答 2

2

虽然这不能回答您的直接问题,但您实际上可以保留按钮并简单地在表单提交上使用您的验证:

<form onsubmit="return validateForm()">

然后,在您的validateForm方法中,返回 true 或 false 指示验证是否已通过。

但是,要回答您的直接问题,您也可以在提交按钮上使用相同的方法,这将阻止提交表单。

更新

正如评论中所指出的,通常需要一个不引人注目的解决方案,所以这里是:

document.getElementById('theForm').onsubmit = function() { return validateForm(); };

于 2013-06-24T23:48:31.397 回答
0

如果您添加 preventDefault...

$("form").submit(function(e) {e.preventDefault();});
于 2013-06-24T23:45:46.180 回答