Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何清除可变html内容中的所有字段?(最好使用jQuery)_Javascript_Jquery_Forms_Field - Fatal编程技术网

Javascript 如何清除可变html内容中的所有字段?(最好使用jQuery)

Javascript 如何清除可变html内容中的所有字段?(最好使用jQuery),javascript,jquery,forms,field,Javascript,Jquery,Forms,Field,我需要重置保存在变量中的HTML内容中的所有表单字段。我在网上搜索过,也在这里搜索过。但我所发现的一切都不起作用。即使只对文本字段使用最简单的方法,也不会成功: var content = $(this).prev('.listset').find('ol.multiple > li:last').html(); $(content).find('input[type=text]').val(''); 我没有可用的表单id。使用普通的旧javascript: document.forms

我需要重置保存在变量中的HTML内容中的所有表单字段。我在网上搜索过,也在这里搜索过。但我所发现的一切都不起作用。即使只对文本字段使用最简单的方法,也不会成功:

var content = $(this).prev('.listset').find('ol.multiple > li:last').html();
$(content).find('input[type=text]').val('');

我没有可用的表单id。

使用普通的旧javascript:

document.forms['my_form_name'].reset()
我发现:

如果表单的ID为myform,则这应该可以实现:

$(':input','#myform')
 .not(':button, :submit, :reset, :hidden')
 .val('')
 .removeAttr('checked')
 .removeAttr('selected');
它使用:输入选择器,该选择器将匹配所有输入、文本区域、选择和按钮元素。因为我们将myform作为第二个参数传递,所以它只会在这个form元素中找到输入。然后使用not过滤掉所有按钮、提交、重置和隐藏的输入。然后,它使用val将其余字段的值设置为空字符串,然后使用removeAttr删除字段的checked和selected属性,以防有任何radio/checkbox/select输入。塔达

在这里:

编辑:来自同一url: 如果复选框上也有默认值,请使用此复选框:

 // Use a whitelist of fields to minimize unintended side effects.
    $(':text, :password, :file, SELECT', '#myFormId').val('');  
    // De-select any checkboxes, radios and drop-down menus
    $(':input', '#myFormId').removeAttr('checked').removeAttr('selected');

这就是您要找的吗?

如果您使用的是所有文本框:

for(c in document.getElementById('id_of_form').childNodes) {
    c.innerHTML = "";
}

如果您使用多个对象,请将childNodes替换为getElementByTagNamename of tag,并将filter替换为type。

这是一个猜测,因为我不知道您的标记是什么样子的,但是jQuery“find”可能不起作用,这取决于html字符串的结构-看看这个问题-

您可以尝试循环遍历“content”字符串,然后分别更新每个表单元素并将它们添加到相关容器中,如-

$(content).each(function () {
   if (this.nodeName == 'INPUT') $(this).val('');
   if (this.nodeName == 'SELECT') $(this).children('option').prop('selected','');
   $("#moveto").append(this);
});

工作演示-

查看此链接中的@powers1 answer需要修复//使用字段白名单以最小化意外副作用。$:文本:密码:文件,选择“myFormId”.val;//取消选中任何复选框、收音机和下拉菜单$':输入“,”myFormId“.removeAttr”选中“.removeAttr”选中“@Haim Evgi我无法使用表单ID。我不想重置表单中的所有字段。它只是一个特定列表元素中的所有字段。将所有列表项指定为同一类,然后通过jquery将值指定给该类。val?如上所述,我不能使用表单ID。我不想重置表单中的所有字段。它只是一个特定列表元素中的所有字段。嗯,好的。我的答案不是最合适的。根据OP的说法,他不能使用表单id,他只想清除表单标记的特定部分。一个可能的页面标记示例可能会有帮助。@Shef在我创建此问题之前,我阅读了。但这并没有回答我的问题。这个答案显示了一个需要表单ID的方法。我的问题是关于一个没有标签的字符串变量。因此,如果您在结束之前仔细阅读问题,我将不胜感激。现在我必须创建一个新的。这是唯一感觉正确的答案。但还没有完全实现。我尝试了这个方法,但它清除了表单中的所有字段。我只想清除要添加的文本字符串中的字段。因此,它不仅清除了“内容”字符串中的表单字段,而且还清除了页面上的所有表单字段?在“内容”字符串中有什么?这与原始答案不同,但是你能不能用一个正则表达式find replace把value=something替换成value=?我不太擅长正则表达式。内容字符串中至少有一段HTML代码。没有标签。但是有输入和选择标签。不,我还没有解决这个问题。现在问题结束了。