问题描述
我想知道是否可以在一定时间段(例如2分钟)后提交表格,即使没有填写所有必填字段,我希望在该固定时间段内输入所有数据提交。当前,尽管我使用的是基于JavaScript的超时功能,但由于未填写必填字段,因此不允许在超时时提交表单。我将所有字段都设置为必填,因为自动对焦功能如果不是必填字段,则似乎无法正常工作(即在当前字段中按Enter键后不会自动进入下一个输入字段。是否可以解决此问题?这么多的帮助!
window.setTimeout(() => this.submit(),120000)
<html>
<main>
<form>
<br><label for="response1"><b>Animals</b></label><br>
<input type="text" id="response1" name="response1" autocomplete="off" autofocus required></br>
<br><input type="text" id="response2" name="response2" autocomplete="off" autofocus required></br>
<br><input type="text" id="response3" name="response3" autocomplete="off" autofocus required></br>
<br><input type="text" id="response4" name="response4" autocomplete="off" autofocus required></br>
<button type="submit">Submit</button>
</form>
</main>
</html>
解决方法
当然,只需将此逻辑放入您的函数中即可。您只需从字段中删除required
属性即可。
let form = document.querySelector('form');
let inputs = form.getElementsByTagName('input');
let i;
for (i = 0; i < inputs.length; i++) {
inputs[i].required = false;
}
,
您的代码有几个问题:
- 您不应打开和关闭br标签,只需将
<br>
放在要换行的位置 - 仅应将autofocus属性放在一个输入上,并且在页面加载时该输入将具有焦点。
- 根据您调用代码的方式,您可能会遇到
this
关键字的问题,最好直接调用该表单。
我在您的代码中更改了这些内容,并成功完成了以下代码(无需删除所需的属性,但是如果确实不需要它们,则将其删除):
window.setTimeout(() => document.forms[0].submit(),1000)
<html>
<main>
<form>
<br>
<label for="response1">
<b>Animals</b>
</label>
<br>
<input type="text" id="response1" name="response1" autocomplete="off" autofocus required>
<br>
<input type="text" id="response2" name="response2" autocomplete="off" required>
<br>
<input type="text" id="response3" name="response3" autocomplete="off" required>
<br>
<input type="text" id="response4" name="response4" autocomplete="off" required>
<button type="submit">Submit</button>
</form>
</main>
</html>
我将超时时间更改为一秒,以便能够看到效果。