我有两个元素,类型为“ radio”。默认情况下选中其中之一。在Firefox浏览器中,当我检查另一个不是默认值的元素时,当我关闭选项卡并还原该选项卡时,我发现“不是默认值” 元素已选中! (在Chrome中这是没有发生的。)这不行,因为价格来自其他选择,而图片属于其他选择。
x > y
我试图将其添加到“重新加载”检查元素中,但是如果页面被更改,则此“脚本”强制在页面加载后检查元素...
这是页面代码:
$(window).load(function(){
$('input').prop('checked', true);
};
如何同时获得这两个信息?->(1)默认情况下,将元素保留为选中状态,以便在还原Firefox选项卡后进行检查; (2)如果单击了正在加载页面的另一个元素,则防止在加载页面后切换到“默认检查”元素。
UPD! 实际上,我在内有约20个动态更改的ID。所以我不能使用#optionval-a ...因为它总是可能是#optionval-b或#optionval-foo-bar甚至是#optionval- 123 ...调用元素的唯一可能方法是:$('input')-就是这个问题...
答案 0 :(得分:0)
现在确定您的第一个要求是什么-您是要重新加载页面吗?如果是这样,您应该期望浏览器在页面上选中默认元素。
要防止如果用户在页面加载完成之前(即,在调用$(window).load(...)
函数之前检查了按钮),则将复选框设置为默认值,则可以将该函数设置为检查按钮的状态。单选元素,尽管我认为您将需要重写该函数,因为此刻它将在每个方框中打勾,直到找到最后一个“输入”元素为止,因为上述代码中的jQuery选择器设置为{{1} },虽然您的意思可能是input
,但是无论如何,要允许用户在页面加载之前选择一个框,而无需onload功能重新设置该选择,则可以检查是否未选中其他所有框确保可以选中默认框:
:input
另外this answer可能会有所帮助。
如果您的意思是如果Firefox在关闭后使用Ctrl + Shift + t立即重新加载页面,则Firefox似乎正在缓存用户的输入,那么我认为他们会故意这样做以帮助他们认为希望打开该页面的用户。最后一个标签页与他们离开时的标签完全相同。对于这种情况,我能想到的唯一解决方案是使用setTimeout()或等效的jQuery函数的脚本,您可以在页面加载时设置脚本,因为我怀疑Firefox在页面加载时是否会覆盖任何此类行为。因此:
$(window).load(function(){
if (!$('#optionval-a').is(':checked' && !$('#option-value-b').is(':checked' && !$('#option-value-c').is(':checked'){
$("#option-value-51").prop("checked", true);
}
}
一种选择可能是在页面完成加载之前不完全显示表单。或者,您可以先在列表中使用“已选中”插入一个隐藏的输入单选元素(其名称是静态的,例如name =“ hiddenCheckedRadioElement”),然后在加载页面后检查是否仍被选中。如果是这样,请检查您选择的字段。如果未选中,则意味着用户选择了其他内容,因此您将不必选中默认框。