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);
}
})
});