表单提交时单选框选中仍触发未选alert的问题修复方法
问题根因
- 单选按钮取值逻辑错误:直接使用
$('input[type=radio][name=name]').val()取值时,会默认返回同name下第一个单选按钮的value,和是否选中无关,必须追加:checked伪类筛选才能获取到实际选中项的值,没有选中项时返回undefined。 - 单选校验的判断逻辑存在漏洞:原有分支判断不管选中哪个单选按钮都会命中告警:如果选中值为
inst,第一个r != 'inst'判断不成立,进入else if分支时r != 'hq'成立,触发告警;如果选中值为hq,第一个r != 'inst'直接成立,触发告警,相当于所有选中场景都会被拦截。
修复后的完整代码
JavaScript部分
$('#form_id').submit(function(el) { el.preventDefault(); // 仅获取已选中的单选按钮值 let r = $('input[type=radio][name=name]:checked').val(); // 未选中时r为undefined,直接触发提示 if(!r){ alert('Please select radio'); return false; } // 校验下拉选择框 if($('#select_id').val() === '0'){ alert('Please select option'); return false; } // 所有校验通过后提交表单 this.submit(); })
HTML部分无需修改,可直接复用现有代码。
内容的提问来源于stack exchange,提问作者Abhi
相关产品推荐
相关产品推荐

