提交后清除表单输入
我已经尝试了几种不同的方式,基于我在这个主题上所做的搜索,出于某种原因,我无法让它发挥作用。 我只想在输入提交按钮后清除文本输入和textarea。
这是代码。
您的表单已提交,因为您的按钮是submit
类型。 在大多数浏览器中,这将导致表单提交和加载服务器响应,而不是在页面上执行javascript。
将提交按钮的类型更改为button
。 此外,由于此按钮被赋予id submit
,它将导致与Javascript的提交function冲突。 更改此按钮的ID。 尝试类似的东西
此实例中的另一个问题是表单的名称包含-
破折号。 但是,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 }
你可以试试这个:
function submitForm() { $('form[name="contact-form"]').submit(); $('input[type="text"], textarea').val(''); }
此脚本需要在页面上添加jquery。
最简单的方法是设置表单元素的值。 如果您正在使用jQuery(我强烈推荐),您可以轻松地使用它
$('#element-id').val('')
对于表单中的所有输入元素,这可能有效(我从未尝试过)
$('#form-id').children('input').val('')
请注意,.children只能找到一级向下的输入元素。 如果你需要找到孙子或类似的.find()应该工作。
可能有更好的方法,但这应该对你有用。
试试这个:
$('#contact-form input[type="text"]').val(''); $('#contact-form textarea').val('');
因为您正在使用jquery
库,我建议您使用reset()
方法。
首先,为表单标记添加id属性
然后在完成时,将输入字段清除为:
$('#myForm')[0].reset();
试试这个:
function submitForm () { // your code $('form :input').attr('value', ''); }