【问题标题】:checking to see if Checkbox is checked is being skipped during execution检查 Checkbox 是否在执行过程中被跳过
【发布时间】:2018-09-18 17:30:50
【问题描述】:

我已经为此绞尽脑汁好几个小时了,但没有得到任何结果。我有一个简单的表单,我将在验证和审查之后提交到​​数据库。

但是,我对检索我正在使用的复选框的状态很感兴趣。我的代码返回除复选框之外的所有值,并且几乎就像它跳过了复选框状态的检索一样,因为变量声明之后的警报因为具有其他值的警报触发并显示。

但是,checked 属性没有返回任何内容。我已经搜索并找到了无数种方法,我觉得我已经尝试了所有方法。以下只是我尝试过的几种方法。谁能看到我做错了什么???

$(function() {
  $('#submit').on('click', function() {
    var studId = $('input[name="Selected"]:checked').val();
    var classId = $('#ClassSelection').find(":selected").val();
    var classCode = $('input[name="Code"]').val();
    //var isOnline=$("input[type='checkbox']").val();
    //var isOnline=$("input[name='isOnline']").prop('checked');
    //var isOnline=$("input[name='isOnline']").is('checked');
    var isOnline = $("input[name='isOnline']").val();
    alert(studId);
    alert(classId);
    alert(classCode);
    alert(isOnline);
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="isOnline" class="form-control">
<input type="button" class="btn btn-primary" id="submit" value="Submit">

【问题讨论】:

  • var isOnline=$("input[name='isOnline']").prop('checked'); - 这一个(您的评论行之一)应该可以工作。当你使用它时,结果是什么?您也可以在代码中包含提交按钮吗?如果它是一个真正的提交,你似乎并没有阻止刷新。
  • 我在 HTML 代码中添加了 Button 元素。似乎它像其他人一样跳过。它不会返回任何东西,也不会发出警报。它只是跳过并提醒其他值。
  • 不幸的是,您的问题似乎没有复制该问题。如果您取消注释我上面提到的行并单击Submit 按钮,您将看到它根据复选框状态正确地提醒truefalseExample
  • 通过注释掉除您提到的代码之外的所有其他代码行,它会发出警报,但不会返回 true 或 false。它引发 3 个警报,一个未定义,另一个为空白。 alert($("input[name='isOnline']").prop('checked'));
  • “它发出警报但不返回真假”是什么意思?如果您取消注释该行,您问题中的代码肯定会提醒truefalse(请参阅我上面链接的示例)。不幸的是,我们无法调试工作代码。如果这在您的用例中不起作用,那么问题可能只是您在问题中包含的代码之外的其他地方。

标签: jquery checkbox ischecked


【解决方案1】:

正如 Tyler Roper 指出的那样,.prop() 函数应该可以正常工作。

你可以试试

$('#submit').on('click', function() {
    var isOnline1=$("input[type='checkbox']").val();
    var isOnline2=$("input[name='isOnline']").prop('checked');
    var isOnline3=$("input[name='isOnline']").is('checked');
    console.log(isOnline1);
    console.log(isOnline2);
    console.log(isOnline3);
});

我为它创建了一个代码笔:https://codepen.io/delpielo/pen/zJmevg,只需将单击“提交”按钮时的输出与选中/未选中的复选框进行比较。

  • .val() 总是返回 'on' - 不是你想要的
  • .is('checked') 总是返回 false - 不是你想要的
  • .prop('checked') - 如果未选中则返回 false,否则返回 true,这正是您要查找的内容

【讨论】:

  • 是的,你是对的,不过我发现了我的问题。看来我的 Wamp 服务器正在运行,并且没有显示我对站点的最新推送。这解释了为什么它似乎跳过了我的代码而没有破坏。我重新启动了我的 wamp 服务器,它开始识别我的更改。
【解决方案2】:

我的 Wamp 服务器似乎正在运行,并且没有显示我对网站的最新推送。这解释了为什么它似乎跳过了我的代码而没有破坏。我重新启动了我的 wamp 服务器,它开始识别我的更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多