zhoujunfei1990 2021-04-03 15:34 采纳率: 50%
浏览 65

两个select标签联动,获取数据不成功怎么解决?

前端有两个select标签,其中公司的select标签根据后端返回的数据,生成option

<li><span>公司:</span><select name="p_company">


    <option value=""></option>


    {% for id,name in company_data.items %}


        <option value="{{ id }}">{{ name }}</option>


    {% endfor %}


</select><span class="must">*</span></li>


 


<li><span>项目:</span><select name="c_project">


    <option value=""></option>


</select><span class="must">*</span></li>

为了让项目的select标签下的option根据所选的公司联动,添加了一个change()监听事件

$(function () {


    function get_project(p_company_id) {   


        let url = $('#get_project_data').attr('src');


        let data = {


            'p_company_id': p_company_id,


        };


        let $select = $("select[name='c_project']");


        $select.empty();


        $select.append('<option></option>');


        $.getJSON(url, data, function (result) {


            for (let i = 0; i < result.data.length; i++) {


                let p_name = result.data[i][2];


                let p_id = result.data[i][9];


                $select.append('<option></option>');


                let $new = $("select[name='c_project'] option:last-child");


                $new.attr('value', p_id);


                $new.text(p_name);


            }


        });


    }


    $("select[name='p_company']").change(function () {


        get_project($(this).val());


    });


});

另外页面上有个按钮<a id="updata"><li>修改</li></a>,绑定了点击事件,点击后向服务器请求公司及项目和其他信息,但是页面上仅能正常显示公司,无法正常显示项目

$('.menu #update').click(function (event) {


        if ($("#content-main tr[selected='selected']").length > 0) {


 


            $('.background').show();


 


            $('.detail h4').text('修改数据');  //显示详细页面


 


            let id = $("#content-main tr[selected='selected'] th:last-child").text();  //表格最后后一行为该数据在数据库中的id,隐藏


            console.log(id);


            let book = $('div.header a[selected="selected"]').attr('id');


            console.log(book);  //获取数据在database中的id号,以及操作的表格


 


            $("div.content input[name='id']").val(id);


            $("div.content input[name='book']").val(book);


 


            let href = $(this).attr('href');


            console.log(href);


 


            $.ajax({


                url: href,


                async: false,


                type: "GET",


                dataType: 'text',


                data: {


                    'id': id,


                    'book': book,


                },


                success: function (result) {


                    let data = JSON.parse(result);


                    console.log(data);


                    $("input[type='checkbox']").val(true)  //checkbox默认值为true


 


                    for (let key in data) {


                        console.log(key);


                        console.log(data[key]);


                        let $target = $("div.content *[name='" + key + "'][type!='checkbox']")


 


                        if (data[key] === true || data[key] === false) {


                            $target.val(String(data[key]));


                        } else {


                            $target.val(data[key]);


                        }


                    }


 


                    $('.detail').show();


                }


            });


 


        } else {


            alert('请选择需要修改的数据');  //没有选中行时提示


        }


        event.preventDefault(); //取消默认动作,避免点击链接事件


 


    });

加载完如图

考虑到可能是jquery赋值无法触发change()事件,在for循环中添加$target.tigger("change"),但是仅仅是select菜单中添加了选项,但是依然无法将值正确的赋给select选项框。

为了了解原因,我在$('.detail').show()前增加一个打印console.log($("select[name='c_project']").children().length),发现结果是1,应该就是这个selelct标签下最初有的空option

想请教各位大神,要怎么解决项目无法正常显示的问题

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-07 18:15
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思