Bootstrap Toggle无法在有限元素上启用禁用功能

时间:2018-11-29 12:05:33

标签: javascript jquery html bootstrap-4 angular-bootstrap-toggle

我正在将Bootstrap切换库与Bootstrap4一起使用,但是在尝试控制用户仅将有限数量的元素切换为“ ON”时遇到问题。这是我的HTML代码:

<div style="border:solid border-width: 1px;">
       <li class="ui-state-default">
           <input type="checkbox" name="checkImg" data-height="10" data-toggle="toggle" data-size="mini"data-onstyle="success" data-offstyle="danger">
                 Option 1
    </li> </div>

所有11个元素具有相同的代码,以及我的Jquery:

$('input[name="checkImg"]').on('change', function (e) {
    if ($('input[name="checkImg"]:checked').length > 3 ) {
          console.log("In Condition");
          $(this).prop('checked', false);   
     }                        
   });

这是当我将4个元素切换为“ ON”时结果的照片: enter image description here

我可以看到情况是正确的,可以检测到何时将3个元素切换为“ ON”,但是我无法禁用其余的“ False”输入,直到某些“ On”元素切换为“ OFF”为止。有人可以帮忙吗?

此外,我在启动时使用了禁用功能,但没有用。

谢谢大家。

编辑:

https://jsfiddle.net/5vr0c3w2/14/

1 个答案:

答案 0 :(得分:1)

您的脚本中有错误。 尝试更改此内容:

/**
 * Reject the call with the specified message. If message is null this call is ignored.
 */
private void rejectCallWithMessage(Context context, String phoneNumber, String textMessage,
                                   int subId, String contactName) {
    if (TextUtils.isEmpty(textMessage)) {
        Log.w(RespondViaSmsManager.this, "Couldn't send SMS message: empty text message. ");
        return;
    }
    if (!SubscriptionManager.isValidSubscriptionId(subId)) {
        Log.w(RespondViaSmsManager.this, "Couldn't send SMS message: Invalid SubId: " +
                subId);
        return;
    }

    SmsManager smsManager = SmsManager.getSmsManagerForSubscriptionId(subId);
    try {
        smsManager.sendTextMessage(phoneNumber, null, textMessage, null /*sentIntent*/,
                null /*deliveryIntent*/);

        SomeArgs args = SomeArgs.obtain();
        args.arg1 = !TextUtils.isEmpty(contactName) ? contactName : phoneNumber;
        args.arg2 = context;
        mHandler.obtainMessage(MSG_SHOW_SENT_TOAST, args).sendToTarget();
    } catch (IllegalArgumentException e) {
        Log.w(RespondViaSmsManager.this, "Couldn't send SMS message: " +
                e.getMessage());
    }
}

对此

oreo

我尝试更正此问题,该脚本现在似乎可以正常工作。

编辑:我看到问题出在Bootstrap-toggle上,它使用另一种方法来检查和取消选中复选框。

不仅要取消选中该复选框,还必须将其父div的类从“ btn-success”更改为“ btn-danger off”。现在,此代码段也应适用于您。

$('input[name=checkImg]')
$('input[name="checkImg"]')