项目中遇到需要用jquery给单选框添加change事件
<div id="operationMethodsGroup" style="float: left; margin-right: 10px;">
<nobr><label style="padding-right:5px;"><input type="radio" alerttext="" key="operationType" name="oprGroup" value="handler_pass:通过" οnclick="lbpm.globals.clickOperation(this);" checked="checked">通过</label></nobr>
<nobr><label style="padding-right:5px;"><input type="radio" alerttext="" key="operationType" name="oprGroup" value="handler_refuse:驳回" οnclick="lbpm.globals.clickOperation(this);">驳回</label></nobr> <nobr><label style="padding-right:5px;"><input type="radio" alerttext="" key="operationType" name="oprGroup" value="handler_commission:转办" οnclick="lbpm.globals.clickOperation(this);">转办</label></nobr>
<nobr><label style="padding-right:5px;"><input type="radio" alerttext="" key="operationType" name="oprGroup" value="handler_communicate:沟通" οnclick="lbpm.globals.clickOperation(this);">沟通</label></nobr>
<nobr><label style="padding-right:5px;"><input type="radio" alerttext="" key="operationType" name="oprGroup" value="handler_abandon:废弃" οnclick="lbpm.globals.clickOperation(this);">废弃</label></nobr>
<nobr><label style="padding-right:5px;"><input type="radio" alerttext="" key="operationType" name="oprGroup" value="handler_additionSign:加签" οnclick="lbpm.globals.clickOperation(this);">加签</label></nobr> </div>
第一想到是是使用change事件
$("input[type='radio'][name=''oprGroup'']").change(function(){
if (this.value != 'handler_pass:通过') {
alert("111");
$("#process_review_button").attr("onclick","Com_Submit(document.kmReviewMainForm, 'publishDraft');");
alert("222");
$("textarea[name='fdUsageContent']").val("");
}else{
$("textarea[name='fdUsageContent']").val("建议职级(P3-P9,M1-M5):\n评价:");
}
}); 但测试发现这种方式并不能生效,无法触发change事件
百度了很多回答,大部分都是不对的,浪费了时间。
经测试以下方式是对的
$(document).on("change","[name='oprGroup']",function(){
if (this.value != 'handler_pass:通过') {
alert("111");
$("#process_review_button").attr("onclick","Com_Submit(document.kmReviewMainForm, 'publishDraft');");
alert("222");
$("textarea[name='fdUsageContent']").val("");
}else{
$("textarea[name='fdUsageContent']").val("建议职级(P3-P9,M1-M5):\n评价:");
}
同时 也可以给每个单选添加onchange事件来解决,例如:
<div class="controls"> <input type="radio" value="1" οnchange="selected(this)" class="required"/>按品类 <input type="radio" value="2" οnchange="selected(this)" class="required" />按品牌 <input type="radio" value="3" οnchange="selected(this)" class="required"/>按品类&品牌 </div>
function selected(obj) { if ($(obj).val() == '1') { $(".category").show(); $(".brand").hide(); $(".category").removeClass("box-right").addClass("box-left"); } else if ($(obj).val() == '2') { $(".category").hide(); $(".brand").show(); $(".brand").removeClass("box-right").addClass("box-left"); }else if($(obj).val() == '3'){ $(".brand").show(); $(".category").show(); $(".brand").removeClass("box-left").addClass("box-right"); $(".category").addClass("box-left"); } } 此种方式相对麻烦一些 但实现效果相同