【问题标题】:jQuery Checkbox is true if Textbox has value of 0 but false if the Textbox is blank [duplicate]如果文本框的值为 0,则 jQuery Checkbox 为真,但如果文本框为空白,则为假 [重复]
【发布时间】:2021-01-07 16:45:34
【问题描述】:

我有这个功能,如果文本框的值为 0,复选框将设置为 true。 但是我有这种奇怪的情况,如果文本框为空白或大于 0,我需要复选框为 false

当我调试 true 这似乎是 "" 和 0 是同一件事 有谁知道我将如何进行这项工作?

$(document).on('blur change keyup', '.CostInput', function () {
  if ($(this).val() == 0) {
    $('input#Enquiry_Cost_InputFree_0').prop('checked', true);
  }

  if ($(this).val() > 0 || "") {
    $('input#Enquiry_Cost_InputFree_0').prop('checked', false);
  }
});

我创建了一个 JS fiddle = https://jsfiddle.net/barrycorrigan/Lqxuvr4w/9/

【问题讨论】:

  • 嗯,===== ... stackoverflow.com/a/523647/9741277 之间是有区别的
  • 在你的表情上有一个exe:$(this).val() > 0 || ""你可能是想说:$(this).val() > 0 || $(this).val() === ""

标签: javascript jquery


【解决方案1】:

===== 在 JavaScript 中是有区别的。

0 == ""  // => true
0 === "" // => false

你可能是想说:

$(document).on('blur change keyup', '.CostInput', function () {
  let val = $(this).val();

  if (+val === 0) {
    $('input#Enquiry_Cost_InputFree_0').prop('checked', true);
  }

  if (+val > 0 || val === "") {
    $('input#Enquiry_Cost_InputFree_0').prop('checked', false);
  }
});

有关其工作原理的更多信息,请参阅此处:https://stackoverflow.com/a/359509/9741277

【讨论】:

  • 感谢@leun4m 的更新,但从您在文本框中的示例中,如果我输入值 0,它不会将复选框填充为 true
  • 哦,对不起我的错误。没有测试它。由于文本框包含 string 的值,如果将其与数值进行比较,则需要将其转换为 number 类型。使用+val 应该是安全的——即使val 不是数字,因为NaN === 0NaN > 0 将始终返回false。
  • 干杯这比我的解决方案要好得多
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-04
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多