单击时未选中复选框输入(CSS切换开关样式)

v1uwarro  于 2023-03-14  发布在  其他
关注(0)|答案(4)|浏览(180)

我正在使用custom CSS toggle switch来设置复选框输入的样式。GitHub Project
但是,当您单击其中一个复选框切换时,它会记录两次单击,并且不会更改选中的值。如果复选框开始时未选中,它将保持未选中状态。如果它开始时选中,它将保持选中状态。
我做了一个小提琴来说明这个问题:https://jsfiddle.net/w1ug4jdc/
样式化复选框的HTML如下所示:

<label class="switch-light switch-candy" onclick="doSomething($(this));">
  <input type="checkbox" />

  <strong>
    Wireless
  </strong>

  <span>
    <span>Off</span>
    <span>On</span>
    <a></a>
  </span>
</label>

这是一个CSS文件,所有的样式都是在这里完成的:https://github.com/ghinda/css-toggle-switch/blob/master/dist/toggle-switch.css

7vux5j2d

7vux5j2d1#

对于checked状态,请使用.prop()而不是.attr(),因为checked是元素的属性,并且不要使用内联事件绑定。
另请参考.prop() vs .attr()
试试这个:

$('.switch-light.switch-candy').on('click', function() {
  $('#updates').append('<p>checked=' + $(this).find('input').prop('checked') + '</p>');
})
<link href="https://merkd.com/engine/ui/themes/lux/assets/css/toggle-switch.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<label class="switch-light switch-candy">
  <input type="checkbox" />

  <strong>
    Wireless
  </strong>

  <span>
    <span>Off</span>
  <span>On</span>
  <a></a>
  </span>
</label>

<div id="updates"></div>

Fiddle

将事件绑定到input元素并获取特定于输入的值:

一个二个一个一个
Updated Fiddle

eaf3rand

eaf3rand2#

将onclick事件附加到输入而不是标签:https://jsfiddle.net/w1ug4jdc/1/

<input type="checkbox" onclick="$('#updates').append('<p>checked='+$(this).find('input').attr('checked')+'</p>');" />

(But如上所述,不要使用内联事件)

j1dl9f46

j1dl9f463#

jQuery似乎没有读取“checked”属性。
尝试使用:checked selector

$("label").click(function(){
  $('#updates')
    .append('<p>checked='+$(this).find(':checkbox').is(':checked')+'</p>');
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<label onclick="">
  <input type="checkbox" />
</label>

<div id="updates"></div>
vyswwuz2

vyswwuz24#

我刚刚遇到了一个类似的问题,试图用aspnetcoreMVC来配置它。表单提交不能单独使用checked属性。
我添加了下面的jQuery片段,以保持checked属性与check属性内联。

$(document).on('click', '.switch-light.switch-candy input', function () {
    $(this).attr("checked", this.checked);
});

我最初为事件侦听器选择了标签,但是控件只在第二次单击时才有React(这变得很烦人)。
喜欢图书馆,到目前为止我见过的最好的,没有增加复杂性。

相关问题