You need to enable JavaScript to run this app. jQuery+PHP多步表单根据用户评分选择显隐子问题div功能失效咨询
优惠活动
大模型
产品
解决方案
定价
更多

jQuery+PHP多步表单根据用户评分选择显隐子问题div功能失效咨询

多步表单子问题显隐逻辑修复方案

现有代码问题排查

  • 冗余的JSON格式转换:json_encode输出的结果本身就是合法JS对象,不需要再执行JSON.stringify+$.parseJSON的多余操作
  • 未正确遍历子问题节点:子问题存储在父评分问题的SubQuestion字段中,当前遍历逻辑只处理了一级问题数组,没有读取子问题配置
  • 缺少数值类型转换:评分输入框取到的值是字符串类型,直接做大小比较会出现逻辑异常
  • 子问题无默认隐藏状态:页面加载后所有子问题默认可见,不符合交互要求
  • 显隐逻辑不完整:只有隐藏逻辑,没有对应展示对应子问题的逻辑,也没有先重置所有子问题状态的步骤

修复后的代码

1. HTML渲染部分调整

给子问题外层div添加默认隐藏的类,避免加载时直接显示:

<?php 
foreach($arr as $records) {?>
<div class="card b-0">
    <div class="row justify-content-center">
        <div class="col-lg-10 col-md-11">
        <?php if($records['type']=="check_box" && $records['ISSubQuestion']=="1" ) { 
            $schools_array = explode("::", $records['options']);
            $result = count($schools_array);
        ?>
            <!-- 新增默认隐藏样式 -->
            <div id='<?php echo $records['ques_id']; ?>' style="display:none;">
                <div class="form-group checkboxes">
                    <label for="nm" class="form-control-label"><?php echo $records['question']; ?></label>
                    <div>
                    <?php foreach($schools_array as $s) { ?>
                        <label class="form-container"><?php echo $s; ?>
                            <input type='checkbox' value='<?php echo $s; ?>' name='check_<?php echo $records['ques_id']; ?>[]' />
                            <span class="checkmark"></span>
                        </label>
                    <?php } ?>
                    </div>  
                </div>  
            </div>  
        <?php } ?>
        </div>
    </div>
</div>
<?php } ?>

2. jQuery逻辑调整

<script>
$(document).ready(function(){
    $("#next1").click(function(){
        // 把评分转成数字类型避免比较异常
        var rating = parseInt($("#name").val());
        // 直接读取PHP输出的问题配置,无需多余格式转换
        var questionData = <?php echo json_encode($arr); ?>;
        // 先隐藏所有子问题重置状态
        $('div[id^="18"], div[id^="19"]').hide();
        // 遍历匹配评分父问题
        $.each(questionData, function(i, parentItem) {
            // 跳过非评分类父问题
            if(parentItem.IsRatingQuestion != 1) return;
            var minThreshold = parseInt(parentItem.min_value);
            // 按规则显示对应子问题
            if(rating <= minThreshold){
                $("#" + parentItem.show_ques_id).show();
            }else{
                $("#" + parentItem.max_show_ques_id).show();
            }
        });
    });
});
</script>

额外注意点

请确认评分输入框的ID是否为#name,如果不是请替换为实际的ID值即可。

内容的提问来源于stack exchange,提问作者Richa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 23:54:04