如何验证是否选中了复选框?

时间:2019-09-26 15:51:06

标签: javascript jquery ruby-on-rails ruby

我当前正在尝试使我的复选框显示一个弹出窗口,用于浏览器通知(如果已选中)。如果用户取消选中它,浏览器通知将弹出,反之亦然。

这是我目前正在尝试的内容的摘要,但它不起作用。

if(checkbox_id == (queue_notification)) {
        if(checkbox_state) {
          $('input#user_hop_queue_notification').is(':checked') == '1'
             if(Notification.requestPermissionre !== "granted"){
              Notification.requestPermission(function(status) {
                console.log('Notification permission status:', status);
              });
            }
          }
        else {
          $('input#user_hop_queue_notification').is(':checked')== ('0');
          if(Notification.requestPermission !== "denied"){
              Notification.requestPermission(function(status) {
                console.log('Notification permission status:', status);
              });
            }
          }
      }

2 个答案:

答案 0 :(得分:0)

public class PolyMor extends Audi { public static void main(String args[]) { Car car = new Audi(); car.carName(); car.first(); } } Api是用户也可以拒绝的东西,因此即使您将Notification属性设置为Notification.permission也无法使用。因此,您最好的机会是使用granted方法并检查用户是否已授予通知访问权限,然后使用通知API来显示通知。谢谢。

答案 1 :(得分:0)

您的代码看起来很奇怪,您似乎在测试is(':checked')的值,但实际上却没有(没有if语句?)。有一个变量checkbox_state已测试但未设置?并且,您似乎正在测试is(':checked')的值是否返回字符串01。在这种情况下,如果您在控制台中手动进行测试或查看文档,您会看到它返回truefalse,这样也可以使您的代码更简单。

所以我将如下编写您的代码:

  if(checkbox_id == (queue_notification)) {
    checkbox_state = $('input#user_hop_queue_notification').is(':checked'); 
    if(checkbox_state) {
      if(Notification.requestPermissionre !== "granted"){
          Notification.requestPermission(function(status) {
            console.log('Notification permission status:', status);
          });
      } 
    } else {
      if(Notification.requestPermission !== "denied"){
          Notification.requestPermission(function(status) {
            console.log('Notification permission status:', status);
          });
      }
    }
  }

如果我正确理解了您的意图,这应该会按预期工作。我们可以将check_state变量重构掉,因为我们不再使用它了(但是现在我想与您的原始代码保持更近的距离)(它可能仍会提高可读性,因此这是保留它的一个很好的理由它,但是is(:checked)本身就很不言自明了。

如果您尝试设置已检查状态,则应使用以下代码:

 $('input#user_hop_queue_notification').prop('checked', true);

(如果不明显,则true会“选中”复选框,false会取消选中)。