"旧的“;当通过javascript选中时,手机不会显示复选框复选标记

"old" phones do not show the checkbox checkmark, when is checked via javascript

本文关键字:手机 显示 复选框 旧的 quot javascript      更新时间:2023-09-26

大家好。我有一个带有表单的页面,有一个选项(复选框)必须选中才能提交表单,所以基本上有一个简单的javascript,如下所示:

function checkbox_tick_action (){
$("#mt-container #option").prop( 'checked',true );
$("#mt-container #option").attr('checked','checked');
console.log("ticked");
}

绑定到提交事件。这很好,但在一些手机上,复选框没有更新,所以发生了这种情况:

表单已提交(复选框已勾选,但显示为未勾选)。登陆下一页,点击后退按钮,复选框现在显示为勾选。我已经做了很多测试,我确信这是一个"更新DOM"的问题,或者只是不呈现复选框的新"视觉"。

有人知道如何解决这个问题吗?

有没有一种方法可以通过js强制渲染元素?

请注意,这实际上适用于大多数设备。

有这个问题的设备之一是三星ACE,使用股票浏览器。

所有有这个问题的手机都是过时的。

这个问题主要出现在2.3.3或更低版本的安卓手机上。

我试过这个:函数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;
}

如果您使用Google材质设计,请将"is checked"类添加到元素的父,作为

  $("#option").parent().addClass("is-checked"); 

以呈现可视化效果。希望这能奏效!