提问人:Augustine 提问时间:11/12/2023 最后编辑:MrUpsidownAugustine 更新时间:11/14/2023 访问量:46
Onclick 不适用于 Toggle 按钮,但与常规 HTML 按钮配合得很好
Onclick not working with Toggle button, but works just fine with a regular HTML button
问:
Onclick 不适用于 Toggle 按钮,但与常规 HTML 按钮配合得很好
这是我的代码:
<!-- This works fine -->
<td>
<button onclick="updateStatus(<?php echo $comp['id'];?>)" id="statusBtn<?php echo $comp['id'];?>" class="status-btn <?php echo $comp['status']==0?'done':'pending'; ?>">
<?php echo $comp['status']==0?'Done':'Pending'; ?>
</button>
</td>
<!-- This doesn't I need the same as above with the below Toggle Button see screenshot -->
<td>
<input type="checkbox"
data-toggle="toggle"
data-size="small"
data-onlabel="Done"
data-offlabel="Pending"
data-onstyle="success"
data-offstyle="warning"
onclick="updateStatus(<?php echo $comp['id']; ?>)" <?php echo $comp['status']==0?'done':'pending';?>
<?php echo $comp['status']==0?'Done':'Pending'; ?> />
</td>
任何帮助都是值得赞赏的! 谢谢。
从评论中添加:
const updateStatus=function(id) {
$.ajax({
type: "POST",
url: "do_switch.php",
data:{ updateId:id },
dataType: "html",
success: function(data){
if(data==1) {
$("#statusBtn"+id).text("Pending") }
else if(data==0) {
$("#statusBtn"+id).text("Done")
} // change status btn colors
}
});
}
以及:
<td>
<input type="checkbox"
data-toggle="toggle"
data-size="small"
data-onlabel="Done"
data-offlabel="Pending"
data-onstyle="success"
data-offstyle="warning"
value="Done"
onclick="updateStatus(<?php echo $comp['id']; ?>)" <?php echo $comp['status']==0?'done':'pending';?> <?php echo $comp['status']==0?'Done':'Pending'; ?> >
</td>
答:
2赞
volkerschulz
11/12/2023
#1
由于您没有告诉我们您正在使用什么拨动开关库,因此需要进行一些猜测。
这些“开关”通常掩盖了底层的复选框,而这个特定的复选框似乎不会触发复选框。不过,开关应该更改复选框(因此可以通过表单提交提交)。所以我会尝试将 更改为 .click event
checked state
onclick
onchange
编辑:有问题的插件是bootstrap5-toggle。
因此,复选框的代码应如下所示:
<input type="checkbox" data-toggle="toggle" data-size="small" data-onlabel="Done" data-offlabel="Pending" data-onstyle="success" data-offstyle="warning" onchange="updateStatus(<?php echo $comp['id']; ?>)" <?php echo $comp['status']==0?'':'checked';?>>
评论
0赞
Augustine
11/12/2023
Bingo@volkerschulz 当我使用 onchange 时,有些东西正在发生变化......这条隧道的尽头肯定会有一些曙光......让我尝试更多..谢谢!
0赞
volkerschulz
11/12/2023
确定。如果您通过编辑问题来提供指向您正在使用的库的链接,这不会有什么坏处。;)
0赞
Augustine
11/12/2023
当然,它们是: <link href=“cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/...” rel=“stylesheet”> <link href=“cdn.jsdelivr.net/npm/[email protected]/css/...” rel=“stylesheet”> <script src=“cdn.jsdelivr.net/npm/[email protected]/js/...> <link href=“cdn.datatables.net/v/bs5/jq-3.7.0/dt-1.13.6/b-2.4.2/...” rel=“stylesheet”>
0赞
Augustine
11/12/2023
我现在遇到了一个问题,虽然 Toggle 正在写入 mysql 表,但当我刷新它时它没有粘住,所有标签都恢复为“待处理”,即使它们在表中是“完成”...:-(
评论
updateStatus
checkbox