大家好。 我有一个带有表单的页面,其中有一个选项(复选框)必须被选中才能提交表单,因此基本上有一个类似于这样的简单 JavaScript:
function checkbox_tick_action (){
$("#mt-container #option").prop( 'checked',true );
$("#mt-container #option").attr('checked','checked');
console.log("ticked");
}
在提交事件上绑定。 这个功能很好,但是在一些手机上,复选框没有被更新,所以会出现以下情况:
表单已提交(复选框被勾选,但显示为未被勾选)。 着陆到下一个页面,然后点击返回按钮,复选框现在显示为勾选状态。 我已经进行了多次测试,我非常确定这是“更新DOM”或某些东西不渲染复选框的新“视觉效果”的问题。
有人知道如何解决这个问题吗?
是否有一种通过js强制呈现元素的方法?
请注意,这实际上在大多数设备上都可以使用。
其中一个存在此问题的设备是使用默认浏览器的三星ACE。
所有存在此问题的手机都比较旧。
此问题主要存在于Android手机中,版本为2.3.3或更低。
我尝试了这个:
function checkbox_tick_action () {$("#mt-container #option").prop( 'checked',true );
$("#mt-container #option").attr('checked','checked');
var opt = document.getElementById('option');
opt.style.display='none';
opt.offsetHeight;
opt.style.display='block';
console.log("tick 2");
很遗憾,实际上没有成功。
HTML如下:
<input type="checkbox" name="option" id="option" value="true" data-tid="checkBox">
CSS:
#mt-container input:not(checked) + label:before {
border: 1px solid #3E3E3E;
background-color: #EFEFEF;
content: "\00a0";
display: inline-block;
width: 14px;
height: 14px;
font-size:15px;
line-height: 15px;
}
#mt-container input:checked + label:before {
border: 1px solid #3E3E3E;
background-color: #EFEFEF;
color: #3E3E3E;
content: "\2714";
font-size: 15px;
text-align: center;
line-height: 15px;
font-weight: bold;
}
#mt-container input:checked, #mt-container input:not(checked) {
position:absolute;
top:-500px;
left:-900px;
}