无法检测单选按钮的更改

时间:2017-09-06 12:05:06

标签: javascript jquery radio-button jsfiddle

我正在尝试检测单选按钮值的更改,以便我可以禁用或启用文本框。

Here is an jsFiddle关于它。

当答案分别为YesNo时,没有任何反应。

这是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]:radio").on('change', function(){ //... });

然后:

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

3 个答案:

答案 0 :(得分:2)

有几个问题:

  1. 您不能在文档中的多个元素上使用相同的while True: word = input("Find out how many cents your word is worth. Please enter your word:").lower() output = sum([ord(c)-96 for c in word]) print("Your word's value is:", output, ".")

  2. 您的选择器id永远不会匹配任何内容,因为它正在寻找包含#input[id=clinic_staff]id="input" #input的元素(id="clinic_staff"),自然不能同时成真。标签选择器只是标签名称([id=clinic_staff]),而不是input

  3. 相反,删除#input并以不同的方式查找它们,可能是id

    input[name=clinic_staff]

    简化示例:

    $("input[name=clinic_staff]").on("change", ...)
    
    $("input[name=clinic_staff]").on("change", function() {
      console.log(this.value);
    });

    附注:强烈建议使用<div> <input type="radio" class="radio-inline" name="clinic_staff" value="Yes">Yes <br> <input type="radio" class="radio" name="clinic_staff" value="No">No </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>元素,以便通过单击文本来选择这些单选按钮。我这样做的首选方法是将label 放在里面input

    label
    $("input[name=clinic_staff]").on("change", function() {
      console.log(this.value);
    });

    ...但如果它们必须分开(通常是这种情况),则必须给它们唯一的<div> <label><input type="radio" class="radio-inline" name="clinic_staff" value="Yes">Yes</label> <br> <label><input type="radio" class="radio" name="clinic_staff" value="No">No</label> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>并在标签上使用id,如下所示:< / p>

    for
    $("input[name=clinic_staff]").on("change", function() {
      console.log(this.value);
    });

答案 1 :(得分:0)

像那样使用它

$('input[type=radio][name=clinic_staff]').change(function()  //use it with name

})

答案 2 :(得分:0)

试试这个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);
      }
    })
 });

免费downvote意味着需要解释,得到它。

首先,$("#input[id=clinic_staff]")。在jQuery中,#意味着它获得了某个字段的id。你在那里试图获得id = input和id = clinic_staff的东西。有些人已经说过,不可能的事情。 $('input[id=m_staff]:checked')要好得多,但必须要说的是,jQuery的存在是为了让您的生活更轻松。你可以简单地在那里写$('#m_staff:checked')

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

第三,但这不太重要:我把它改回$("input").on('change', function()。这只是因为我这样使用它,所以随意做你想做的事。

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

&#13;
&#13;
<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">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(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);
      }
    })
 });

</script>
&#13;
&#13;
&#13;