JS中的单选按钮检查不起作用

Radio button check in JS not working?

本文关键字:检查 不起作用 单选按钮 JS      更新时间:2023-09-26

我想我在这里超级迟钝,所以做了一个小提琴,为什么每当我检查另一个单选按钮时,它都不会保持检查状态?

小提琴中,它将加载选中"diy"按钮;如果您单击"付费",您将看到单选按钮在警报加载时跳到那里,但随后跳回,即使JS语句在控制台中独立工作。感谢帮助!(顺便说一句,我尝试了 2 种检查方法,都失败了)

https://jsfiddle.net/gzf28hsk/

这是可能中断的功能,但我不知道在哪里

function populateLogistic(type, new_status = null) {
  radio_paid = $('input[name="delivery"][value="paid"]')
  radio_diy = $('input[name="delivery"][value="diy"]')
  if (new_status === null) {
      radio_paid.prop("checked", false)
      radio_diy.prop("checked", true)
  } else if (new_status == "paid") {
      alert(new_status)
      //radio_paid.checked = true
      //radio_diy.checked = false
      radio_paid.prop("checked", true)
      radio_diy.prop("checked", false)
  } else if (new_status == "diy") {
      //radio_paid.checked = false
      //radio_diy.checked = true
      radio_paid.prop("checked", false)
      radio_diy.prop("checked", true)
  }
}

改为收听change事件。

更新

实际上,问题是您在事件处理程序中执行e.preventDefault();,取消事件并撤消单击。

无论如何,最好侦听 change 事件以获取输入更改,因为在那里您确定值实际上已更改,并且如果输入在没有单击的情况下更改,例如使用键盘,也会触发该值。

也就是说,您可以(或应该)使用$('input[name="delivery"]:checked').val()而不是$(this).val()来获取所选选项