layui的省市区的三级联动,在iframe里面不起作用

province.js

var defaults = {

s1: 'provid',
s2: 'cityid',
s3: 'areaid',
v1: null,
v2: null,
v3: null

};
var $form;
var form;
var $;
layui.define(['jquery', 'form'], function () {

$ = layui.jquery;
form = layui.form;
$form = $('form');
treeSelect(defaults);

});
function treeSelect(config) {

config.v1 = config.v1 ? config.v1 : 110000;
config.v2 = config.v2 ? config.v2 : 110100;
config.v3 = config.v3 ? config.v3 : 110101;
$.each(threeSelectData, function (k, v) {
    appendOptionTo($form.find('select[name=' + config.s1 + ']'), k, v.val, config.v1);
});
form.render();
cityEvent(config);
areaEvent(config);
form.on('select(' + config.s1 + ')', function (data) {
    cityEvent(data);
    form.on('select(' + config.s2 + ')', function (data) {
        areaEvent(data);
    });
});

function cityEvent(data) {
    $form.find('select[name=' + config.s2 + ']').html("");
    config.v1 = data.value ? data.value : config.v1;
    $.each(threeSelectData, function (k, v) {
        if (v.val == config.v1) {
            if (v.items) {
                $.each(v.items, function (kt, vt) {
                    appendOptionTo($form.find('select[name=' + config.s2 + ']'), kt, vt.val, config.v2);
                });
            }
        }
    });

    form.render();
    config.v2 = $('select[name=' + config.s2 + ']').val();
    areaEvent(config);
}
function areaEvent(data) {
    $form.find('select[name=' + config.s3 + ']').html("");
    config.v2 = data.value ? data.value : config.v2;
    $.each(threeSelectData, function (k, v) {
        if (v.val == config.v1) {
            if (v.items) {
                $.each(v.items, function (kt, vt) {
                    if (vt.val == config.v2) {
                        $.each(vt.items, function (ka, va) {
                            appendOptionTo($form.find('select[name=' + config.s3 + ']'), ka, va, config.v3);
                        });
                    }
                });
            }
        }
    });

    form.render();
    form.on('select(' + config.s3 + ')', function (data) { });
}
function appendOptionTo($o, k, v, d) {
    var $opt = $("<option>").text(k).val(v);
    if (v == d) { $opt.attr("selected", "selected") }
    $opt.appendTo($o);
}

}

            <div class="layui-form-item">
                <label class="layui-form-label">选择地区</label>
                <div class="layui-input-inline">
                    <select name="provid" id="provid" lay-filter="provid">
                        <option value="">请选择省</option>
                    </select>
                </div>
                <div class="layui-input-inline">
                    <select name="cityid" id="cityid" lay-filter="cityid">
                        <option value="">请选择市</option>
                    </select>
                </div>
                <div class="layui-input-inline">
                    <select name="areaid" id="areaid" lay-filter="areaid">
                        <option value="">请选择县/区</option>
                    </select>
                </div>
            </div>
阅读 3.4k
2 个回答

已经解决了。layui的版本和jquery版本兼容问题

新手上路,请多包涵

获取到是数字而不是地名

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题