Jquery 在HTML选择标记中查找默认选定选项?
我在网上找到了清除表单的代码,但它没有选择框。使用jquery,我尝试添加代码,以便在重置表单时在选择框中选择默认选项。我认为找到默认值的唯一方法是查找所选选项的位置。然后我发现,当用户选择其他选项时,jquery不会将selected视为默认选项,而是将其视为用户选择的新选项 如何在表单中找到默认选项以便正确清除Jquery 在HTML选择标记中查找默认选定选项?,jquery,html,forms,Jquery,Html,Forms,我在网上找到了清除表单的代码,但它没有选择框。使用jquery,我尝试添加代码,以便在重置表单时在选择框中选择默认选项。我认为找到默认值的唯一方法是查找所选选项的位置。然后我发现,当用户选择其他选项时,jquery不会将selected视为默认选项,而是将其视为用户选择的新选项 如何在表单中找到默认选项以便正确清除 //http://www.learningjquery.com/2007/08/clearing-form-data $.fn.clearForm = function () {
//http://www.learningjquery.com/2007/08/clearing-form-data
$.fn.clearForm = function () {
return this.each(function () {
var type = this.type, tag = this.tagName.toLowerCase();
if (tag == 'form')
return $(':input', this).clearForm();
if (type == 'text' || type == 'password' || tag == 'textarea')
this.value = '';
else if (type == 'checkbox' || type == 'radio')
this.checked = false;
else if (tag == 'select') {
//alert($('option', this).size());
alert($('option[selected]', this).val());
}
});
};
通常默认值是
中的第一个
,因此您可以执行以下操作:
$(this).find("option:first").attr("selected", true);
但是,如果要重置整个表单,可以使用.reset()
调用将其重置为页面加载时的状态,如下所示:
if (tag == 'form')
this.reset();
我不确定那是你真正想要的,但只是把它扔出去。通常本地DOM方法已经非常方便,不要忽略它们 我使用了以下代码片段来实现这一点:
$(this).val($(this).find('option[selected]').val());
选项[选定]
将获得“硬编码”选定选项(默认值)。
option:selected
相反,将获得当前选择的选项
这将适用于单选择,多选择需要不同的方法:
$(this).find('option').each(function(i, opt) {
opt.selected = opt.defaultSelected;
});
这也适用于单选。我发现Koraktor的答案在IE8及更低版本中不起作用。我通过迭代选项解决了这个问题,直到找到默认的选定选项:
var defaultValue;
$(this).find('option').each(function (i, o) {
if (o.defaultSelected) {
defaultValue = o.value;
return;
}
});
不太优雅,但在IE中有效。Koraktor的答案在Chrome中也不适用,我无法使用form.reset(),因为我想重置表单的一个子集。我发现最简单的方法是在加载页面时给selects一个defaultValue,然后reset函数在:input选择器返回的所有元素上使用同一行
$("#top1 select").each(function() {
this.defaultValue = $(this).val();
});
$(".reset").click(function() {
$('#top1 :input').each(function() {
$(this).val(this.defaultValue);
});
});
我说的是,在html中,当你有一个包含5件事情的列表,并且html作者在html源代码中的一个选项中选择了要写的内容时。这可能是最后一次。最后第二项,第二项,等等。如果生成了此代码,我会内联一些JS变量以供外部JS文件使用,但不幸的是html没有生成。@acidzombie24-在这种情况下,
.reset()
看起来就像您想要的那样…它会将整个
重置为页面加载时的状态,包括最初选择的
…您的替代方法是将其存储在页面加载中,然后再还原。我不确定为什么我不能使用该功能,但它看起来像是在做我想要的事情。(如果我遇到问题,我会在这里告诉你)。如何通过jquery清除它?我用这个$(“表单”)[0]进行了测试但是,将$(“表单”)[0]
替换为$(this)
和$(this).get()将出现错误。使用Chrome“Uncaught TypeError:Object[Object HTMLFormElement]没有方法“reset”@acidzombie24-这是一个DOM方法,所以只要this.reset()
如果this
是一个表单元素…希望这个例子能把它清除掉:$(“form”).each(fuction(){this.reset();})代码>哦,是的,这是有道理的。我不知道我被什么弄糊涂了。很好的回答,特别是问/说我不需要自己的jquery重置(或者为什么它没有提到它。我看到它有,但只是在我几乎从未读过的评论中)