提交后清除我的表单输入
Clearing my form inputs after submission
根据我对这个主题的搜索,我已经尝试了几种不同的方法,但由于某种原因我无法让它工作。我只想在点击提交按钮后清除我的文本输入和文本区域。
这是代码。
<div id="sidebar-info">
<form name="contact-form" action="formprocess.php" method="post" target="ninja-frame">
<h1>By Phone</h1>
<p id="by-phone">XXX-XXX-XXXX</p>
<h1>By Email</h1>
<p id="form-row">Name</p>
<input name="name" id="name" type="text" class="user-input" value="">
<p id="form-row">Email</p>
<input name="email" id="email" type="text" class="user-input" value="">
<p id="form-row">Message</p>
<textarea name="message" id="message" class="user-input" rows="10" maxlength="1500"></textarea>
<p>*Please fill out every field</p>
<input type="submit" value="Submit" id="submit" onclick="submitForm()">
<script>
function submitForm() {
document.contact-form.submit();
document.contact-form.reset();
}
</script>
</form>
</div>
您的表单已经提交,因为您的按钮键入 submit
。 在大多数浏览器中,这将导致表单提交和服务器响应的加载,而不是在页面上执行javascript。
将提交按钮的类型更改为button
。 此外,由于此按钮被赋予 id submit
,它会导致与 Javascript 的提交函数发生冲突。 更改此按钮的 ID。 尝试类似的东西
<input type="button" value="Submit" id="btnsubmit" onclick="submitForm()">
此实例中的另一个问题是表单的名称包含-
短划线。 但是,Javascript 将-
转换为减号。
您将需要使用基于数组的表示法或使用 document.getElementById()
/document.getElementsByName()
。getElementById()
函数直接返回元素实例,因为 Id 是唯一的(但它需要设置 Id)。 getElementsByName()
返回具有相同名称的值数组。 在这种情况下,由于我们尚未设置 id,因此可以使用索引为 0 的getElementsByName
。
尝试以下操作
function submitForm() {
// Get the first form with the name
// Usually the form name is not repeated
// but duplicate names are possible in HTML
// Therefore to work around the issue, enforce the correct index
var frm = document.getElementsByName('contact-form')[0];
frm.submit(); // Submit the form
frm.reset(); // Reset all form data
return false; // Prevent page refresh
}
由于您使用的是jquery
库,因此建议您使用reset()
方法。
首先,在表单标签中添加 id 属性
<form id='myForm'>
然后在完成后,清除输入字段,如下所示:
$('#myForm')[0].reset();
根据MDN使用HTMLFormElement.prototype.reset
document.getElementById("myForm").reset();
你可以试试这个:
function submitForm() {
$('form[name="contact-form"]').submit();
$('input[type="text"], textarea').val('');
}
此脚本需要将 jquery 添加到页面上。
最简单的方法是设置表单元素的值。如果你使用的是jQuery(我强烈推荐),你可以很容易地做到这一点
$('#element-id').val('')
对于表单中的所有输入元素,这可能有效(我从未尝试过)
$('#form-id').children('input').val('')
请注意,.children 只能找到低一级的输入元素。如果你需要找孙子或这样的.find()应该工作。
可能有更好的方法,但这应该适合您。
您可以分配给 onsubmit
属性:
document.querySelector('form').onsubmit = e => {
e.target.submit();
e.target.reset();
return false;
};
https://developer.mozilla.org/docs/Web/API/GlobalEventHandlers/onsubmit
$('#contact-form input[type="text"]').val('');
$('#contact-form textarea').val('');
var btnClear = document.querySelector('button');
var inputs = document.querySelectorAll('input');
btnClear.addEventListener('click', () => {
inputs.forEach(input => input.value = '');
});
btnSave.addEventListener("click", () => {
inputs.forEach((input) => (input.value = ""));
});
**单击后使用要清除输入的按钮,而不是btnSave**
只需在函数末尾包含以下行:
document.getElementById("btnsubmit").value = "";
我将以下内容与jQuery一起使用:
$("#submitForm").val("");
其中submitForm
是 HTML 中输入元素的 ID。我在我的函数之后运行它以从输入字段中提取值。该提取值函数如下:
function extractValue() {
var value = $("#submitForm").val().trim();
console.log(value);
};
另外,不要忘记包含preventDefault();
方法来阻止提交类型表单刷新页面!
在函数上,您正在提交按钮的事件上运行。如果您使用表单本身来运行任何 if 语句,请在事件的函数中执行以下操作。
//assigned form id value to a variable.
let myFormId = $('form').attr('id');
//if statement or loop goes here.
document.getElementById(myFormId).reset();
- 可以't让我的if语句处理js中的html表单输入
- 如何在submit to sightly时将表单输入值作为参数传递给WCMUsePojo
- 单击鼠标,用MySQL数据填充html表单输入字段
- 从HTML表单发布blob的表单输入类型是什么
- 在不使用PHP的情况下将表单输入值获取到Javascript中
- 在Chrome中重新加载页面后清除表单输入值
- CasperJS填充表单-输入名称有方括号
- 表单输入字段随着溢出的文本而增长
- Highcharts:根据表单输入动态显示数据
- 如何在为表单输入分别处理$(this)和$时编写DRY代码
- 如何从AngularJS表单输入中生成一个永久变量
- 将表单输入保存到txt,弹出结果,不更改页面
- 在表单输入字段中创建默认值
- 如何根据提交表单时下拉框中的值禁用html表单输入框
- 使用jQuery延迟表单输入,并在延迟后在同一页面上显示结果
- Jquery无法找到给定表单id的表单输入
- 如何使用javascript验证在表单输入中避免负值、浮点值和十进制值
- 对表单输入执行计算
- Javascript 重复表单输入
- 使用 JavaScript 计算并添加表单输入的值