重新打开浏览器后我的选项有问题
I have a problem with options after re-opening browser
关闭并重新打开设置为“从我离开的地方继续”的浏览器后,我很难理解选项和单选按钮设置的情况。 Chrome & Edge 的行为相同。
我想让 javascript 根据选项和单选按钮的显示方式运行,或者强制选项和单选按钮显示默认值(即匹配 javascript 的值认为是固定的)。
我在做什么:-
a) 我将单选按钮更改为单选按钮 2。我关闭浏览器并重新打开它。单选按钮指示单选按钮 1。Javascript 也表现得好像单选按钮 1 已被选中。一切顺利。
b) 我将选项更改为选项 2,将单选按钮更改为单选按钮 2。我关闭浏览器并重新打开它。单选按钮指示单选按钮 1。Javascript 也表现得好像单选按钮 1 已被选中。该选项继续显示为选项 2,但 javascript 表示已选择选项 1。
c) 我将单选按钮更改为单选按钮 2,将选项更改为选项 2。我关闭浏览器并重新打开它。单选按钮表示单选按钮 2。Javascript 的行为就像单选按钮 1 被选中一样。该选项继续显示为选项 2,但 javascript 表示已选择选项 1。
这完全出乎意料,我看不出如何强制选项和单选按钮指示它们选择的值。这只会在关闭并重新打开浏览器后发生。
我的代码在这里
<select id="sel">
<option value=1 selected>Option 1</option>
<option value=2>Option 2</option>
<option value=3>Option 3</option>
</select>
<p>Radio Buttons<br/>
<input type="radio" id="r1" name="rb" value="rb1" checked> Radio Button 1
<input type="radio" id="r2" name="rb" value="rb2"> RadioButton 2
</p>
<span id="debug"></span>
<script>
debug();
function debug(){
var e=document.getElementById("sel");
var rb1val = document.getElementById("r1").checked;
document.getElementById("debug").innerHTML="Option "+e.options[e.selectedIndex].value+" is selected. Radio Button 1 is "+rb1val;
document.getElementById("r1").value;
}
</script>
经过大量搜索,我找到了不太可能的答案。
通过将元素包含在带有 autocomplete="off" 的表单中,问题就消失了:-
<form autocomplete="off">
<select id="sel" onchange="debug()">
<option value=1 selected>Option 1</option>
<option value=2>Option 2</option>
<option value=3>Option 3</option>
</select>
<p>Radio Buttons<br/>
<input type="radio" id="r1" name="rb" value="rb1" checked onchange="debug()"> Radio Button 1
<input type="radio" id="r2" name="rb" value="rb2" onchange="debug()"> RadioButton 2
</p>
<span id="debug"></span>
</form>
<script>
debug();
function debug(){
var e=document.getElementById("sel");
var rb1val = document.getElementById("r1").checked;
document.getElementById("debug").innerHTML="Option "+e.options[e.selectedIndex].value+" is selected. Radio Button 1 is "+rb1val;
document.getElementById("r1").value;
}
</script>
关闭并重新打开设置为“从我离开的地方继续”的浏览器后,我很难理解选项和单选按钮设置的情况。 Chrome & Edge 的行为相同。
我想让 javascript 根据选项和单选按钮的显示方式运行,或者强制选项和单选按钮显示默认值(即匹配 javascript 的值认为是固定的)。
我在做什么:-
a) 我将单选按钮更改为单选按钮 2。我关闭浏览器并重新打开它。单选按钮指示单选按钮 1。Javascript 也表现得好像单选按钮 1 已被选中。一切顺利。
b) 我将选项更改为选项 2,将单选按钮更改为单选按钮 2。我关闭浏览器并重新打开它。单选按钮指示单选按钮 1。Javascript 也表现得好像单选按钮 1 已被选中。该选项继续显示为选项 2,但 javascript 表示已选择选项 1。
c) 我将单选按钮更改为单选按钮 2,将选项更改为选项 2。我关闭浏览器并重新打开它。单选按钮表示单选按钮 2。Javascript 的行为就像单选按钮 1 被选中一样。该选项继续显示为选项 2,但 javascript 表示已选择选项 1。
这完全出乎意料,我看不出如何强制选项和单选按钮指示它们选择的值。这只会在关闭并重新打开浏览器后发生。
我的代码在这里
<select id="sel">
<option value=1 selected>Option 1</option>
<option value=2>Option 2</option>
<option value=3>Option 3</option>
</select>
<p>Radio Buttons<br/>
<input type="radio" id="r1" name="rb" value="rb1" checked> Radio Button 1
<input type="radio" id="r2" name="rb" value="rb2"> RadioButton 2
</p>
<span id="debug"></span>
<script>
debug();
function debug(){
var e=document.getElementById("sel");
var rb1val = document.getElementById("r1").checked;
document.getElementById("debug").innerHTML="Option "+e.options[e.selectedIndex].value+" is selected. Radio Button 1 is "+rb1val;
document.getElementById("r1").value;
}
</script>
经过大量搜索,我找到了不太可能的答案。
通过将元素包含在带有 autocomplete="off" 的表单中,问题就消失了:-
<form autocomplete="off">
<select id="sel" onchange="debug()">
<option value=1 selected>Option 1</option>
<option value=2>Option 2</option>
<option value=3>Option 3</option>
</select>
<p>Radio Buttons<br/>
<input type="radio" id="r1" name="rb" value="rb1" checked onchange="debug()"> Radio Button 1
<input type="radio" id="r2" name="rb" value="rb2" onchange="debug()"> RadioButton 2
</p>
<span id="debug"></span>
</form>
<script>
debug();
function debug(){
var e=document.getElementById("sel");
var rb1val = document.getElementById("r1").checked;
document.getElementById("debug").innerHTML="Option "+e.options[e.selectedIndex].value+" is selected. Radio Button 1 is "+rb1val;
document.getElementById("r1").value;
}
</script>