Javascript 无法检测单选按钮中的更改

Javascript 无法检测单选按钮中的更改,javascript,jquery,radio-button,jsfiddle,Javascript,Jquery,Radio Button,Jsfiddle,我试图检测单选按钮值的变化,以便禁用或启用文本框 关于它 当答案分别为Yes和No时,什么都没有发生 以下是JS: $(document).ready(function() { $("#input[id=clinic_staff]").change(function() { var clinic_staff = $('input[id=clinic_staff]:checked').val(); var y_staff = $('input[id=y_staff]:checked').

我试图检测单选按钮值的变化,以便禁用或启用文本框

关于它

当答案分别为
Yes
No
时,什么都没有发生

以下是JS:

$(document).ready(function()
{

$("#input[id=clinic_staff]").change(function()
{
  var clinic_staff = $('input[id=clinic_staff]:checked').val();
  var y_staff = $('input[id=y_staff]:checked').val();
  var m_staff = $('input[id=m_staff]:checked').val();
  console.log(clinic_staff);
  console.log(m_staff);
  if(clinic_staff == "Yes" && m_staff == "No")
  {
    $("#patient_name_en").val("Confidential");
    $("#patient_name_en").prop("disabled", true);
  }
  else
  {
    $("#patient_name_en").val("");
    $("#patient_name_en").prop("disabled", false);
  }
})
});
html在这里:

<div class="col-sm-3" style="border: 1px solid">
    <input type="radio" class="radio-inline" name="clinic_staff" id="clinic_staff" value="Yes">Yes
    <br>
    <input type="radio" class="radio" name="clinic_staff" id="clinic_staff"    value="No">No
</div>
<div class="col-sm-3" style="border: 1px solid">
    <input type="radio" class="radio-inline" name="m_staff" id="m_staff" value="Yes">Yes
    <br>
    <input type="radio" class="radio" name="m_staff" id="m_staff"    value="No">No
</div>
<input class="form-control" type="text"  name="patient_name_en" id="patient_name_en">
然后:

$("#input[id=clinic_staff]:checked").on('change', function(){ //... });
有几个问题:

  • 不能对文档中的多个元素使用相同的
    id

  • 您的选择器
    #input[id=clinic\u staff]
    将永远不会匹配任何内容,因为它正在查找具有
    id=“input”
    #input
    id=“clinic\u staff”
    [id=clinic\u staff]
    )的元素,这自然不能同时为真。标记选择器只是标记名(
    input
    ),而不是
    #input

  • 取而代之的是,删除
    id
    s并以不同的方式查找它们,可能是
    input[name=clinic\u staff]

    $("input[name=clinic_staff]").on("change", ...)
    
    简化示例:

    $(“输入[name=clinic\u staff]”)。关于(“更改”,函数(){
    console.log(this.value);
    });
    

    像那样使用它

    $('input[type=radio][name=clinic_staff]').change(function()  //use it with name
    
    })
    
    试试这个javascript

    $(document).ready(function()
      {
    
        $("input").on('change', function()
        {
          var clinic_staff = $('#clinic_staff:checked').val();
          var m_staff = $('#m_staff:checked').val();
          console.log(clinic_staff);
          console.log(m_staff);
          if(clinic_staff == "Yes" && m_staff == "No")
          {
            $("#patient_name_en").val("Confidential");
            $("#patient_name_en").attr("disabled", true);
          }
          else
          {
            $("#patient_name_en").val("");
            $("#patient_name_en").attr("disabled", false);
          }
        })
     });
    
    自由否决票意味着需要解释,明白了吗

    首先,
    $(“#输入[id=clinic_staff]”)
    。在jQuery中,
    #
    意味着它要获取某个字段的id。在这里,您正试图通过id=input和id=clinic\u人员获取一些信息。一些人已经说过,不可能的事情
    $('input[id=m_staff]:checked')
    要好得多,但总而言之,jQuery的存在是为了让您的生活更轻松。您只需在那里编写
    $('m#u staff:checked')

    另一件事:我让它更具响应性,让它在每次你检查另一个按钮时都执行该功能。我这样做是因为如果有人在第一个选项中选择“是”,然后在第二个选项中选择“否”,它就不会显示“机密”标签,因为你让它只响应第一个单选按钮上的事件

    第三,但这不太重要:我把它改回了
    $(“input”)。在('change',function()
    。这只是因为我是这样使用它的,所以请随意做,哈哈

    我在这里添加代码片段,以防您想要测试它


    不 对
    不 $(文档).ready(函数() { $(“输入”)。在('change',function()上 { var clinic_staff=$(“#clinic_staff:checked”).val(); var m#u staff=$('m#u staff:checked').val(); //控制台日志(医务人员); //控制台日志(m_人员); 如果(门诊部员工==“是”&门诊部员工==“否”) { $(“患者姓名”)val(“机密”); $(“患者姓名”).attr(“残疾”,真); } 其他的 { $(“#患者姓名”)val(“”); $(“患者姓名”).attr(“禁用”,假); } }) });
    Do
    [id=“clinic\u staff”]
    而不是
    [id=clinic\u staff]
    。添加引号。元素的
    id
    属性必须是唯一的。不能有多个元素具有
    id=“clinic\u staff”
    。此外,您的jQuery选择器无效。您不需要使用
    #input
    而需要
    input
    @MrGeek,但更好的做法是,如果值在重复的
    id
    属性的itAside中没有空格或无效字符,则从
    #input[…
    选择器中删除
    #
    $(document).ready(function()
      {
    
        $("input").on('change', function()
        {
          var clinic_staff = $('#clinic_staff:checked').val();
          var m_staff = $('#m_staff:checked').val();
          console.log(clinic_staff);
          console.log(m_staff);
          if(clinic_staff == "Yes" && m_staff == "No")
          {
            $("#patient_name_en").val("Confidential");
            $("#patient_name_en").attr("disabled", true);
          }
          else
          {
            $("#patient_name_en").val("");
            $("#patient_name_en").attr("disabled", false);
          }
        })
     });