提交错误后jQuery change函数失效,#x无法自动显示的问题
解决表单提交错误后下拉框选中状态对应元素不自动显示问题
你的问题核心在于:当前jQuery代码仅在下拉框触发change事件时才执行显示/隐藏逻辑,但表单提交错误、页面重新加载后,下拉框的选中状态是通过PHP回显设置的,这个过程不会触发change事件,所以即便选中了"yes",#x也不会自动显示。
给你两种简单的解决方法:
方法1:封装逻辑并初始化执行
把显示/隐藏的判断逻辑抽成独立函数,页面加载时先执行一次,同时绑定到change事件上:
$(function() { // 封装判断逻辑 function updateXVisibility() { if ($('#field1').val() === 'yes') { $('#x').show(); } else { $('#x,#y,#z').hide(); } } // 页面初始化时立即执行一次 updateXVisibility(); // 下拉框变化时执行 $('#field1').change(updateXVisibility); });
方法2:手动触发change事件
在绑定change事件后,直接调用trigger('change')手动触发一次事件,让初始化时就执行判断逻辑:
$(function() { $('#x,#y,#z').hide(); $('#field1').change(function() { if ($('#field1').val() === 'yes') { $('#x').show(); } else { $('#x,#y,#z').hide(); } }).trigger('change'); // 手动触发一次change事件 });
小提示
注意你的下拉框name属性是field1,但PHP代码里判断的是$_POST['hassubunits'],如果这是笔误,需要改成$_POST['field1']才能确保选中状态正确回显(不过你说选中状态已经解决,应该实际代码是匹配的)。
内容的提问来源于stack exchange,提问作者Edman Center
相关产品推荐
相关产品推荐

