jQuery X-可编辑 : Update select field based on value of other select field

标签 jquery ajax jquery-plugins twitter-bootstrap

我正在使用 jquery 的 X-Editable 插件。我有两个选择字段,它们通过 ajax 动态提供数据。这是我的代码:

字段:

<td class="center">
<a href="#" data-name="'.$res['mid'].'" class="zone">'.$zonename.'</a>
</td>
<td class="center">
<a href="#" data-name="'.$res['mid'].'" class="area" data-zona="'.$zoneuid.'">'.$areaname.'</a>
</td>

还有 jQuery:

$('a.zone').editable({
            type: 'select',
            url: '../admin/callbacks/quickEdit.php?t=zone',
            pk: 1,
            showbuttons: true,
            source: function() {
                var result;
                $.ajax({
                    url: '../admin/callbacks/jsonDataList.php',
                    data: {t: 'zone'},
                    type: 'GET',
                    global: false,
                    async: false,
                    dataType: 'json',
                    success: function(data) {
                        result = data;
                    }
                });
                return result;
            },
            success: function(response, newValue) {
                $(this).parent().siblings('td').children('a.area').data('zona', newValue);
                console.log(response, newValue);
            }
        });
        $('a.area').editable({
            type: 'select',
            pk: 1,
            url: '../admin/callbacks/quickEdit.php?t=area',
            showbuttons: true,
            source: function() {
                var result;
                var zona = $(this).data('zona');
                $.ajax({
                    url: '../admin/callbacks/jsonDataList.php',
                    data: {t: 'area', zone: zona},
                    type: 'GET',
                    global: false,
                    async: false,
                    dataType: 'json',
                    success: function(data) {
                        result = data;
                    }
                });
                return result;
            },
            success: function(response, newValue) {
                console.log(response);
            }
        });

我想做的是这样的:当他们更改 $('a.zone') 的值时,我希望 $('a.area') 为重新加载ajax数据。我怎样才能做到这一点?

最佳答案

我为此苦苦挣扎了一段时间。基本上,最终的工作是

  1. 通过在可编辑成功函数中触发上游可编辑的编辑成功来调整下游可编辑的更新,
  2. 用其自身的克隆替换旧的下游可编辑内容,以摆脱附加的表单(我还没弄清楚如何直接更新),并且
  3. 在替换上调用 editables 函数。

看看下面。

    var editable_triggered_updates = function (changed_element, newValue) { 

        var update_second_editable = function (el_id, newUpstreamValue) {
            var data = { 
                id_upstream_editable: "oldUpstreamValue" 
            };
            if (data[el_id]===undefined) {
                return;
            }

            // IE cache workaround
            var n = new Date().getTime();

            $.getJSON(my_lookup_url, {t:n, my_get_parameter: newUpstreamValue}, function(return_object){

                // Step 2: get rid of old editable form by replacing editable with clone
                $('#id_downstream_editable').replaceWith($('#id_downstream_editable').clone()); 
                $('#id_downstream_editable').attr('data-source', return_object['data-source']);

                // Step 3: call editable on new objects
                $('#id_downstream_editable').editable({ 
                    mode: 'inline',
                    ajaxOptions: {
                        dataType: 'json',
                        sourceCache: 'false'
                    }
                });
            });
        };

        update_second_editable(changed_element.id, newValue);
    };

    !function (triggered_updates) { // editables setup
        $(".editable").editable({
            mode: 'inline', 
            ajaxOptions: {
                dataType: 'json',
                sourceCache: 'false'
            }
            success: function(response, newValue) {
                triggered_updates(this, newValue); // Step 1
            },
        });
    }(editable_triggered_updates || console.log); // Step 1 also

关于jQuery X-可编辑 : Update select field based on value of other select field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16267565/

相关文章:

javascript - 将标签和标记对齐在同一垂直线上(Highcharts)

javascript - Angularjs:找不到通过ajax调用从服务器获取的表单

jquery - Kendo 数据源参数映射

javascript - 插件和现有 jquery 代码之间的冲突

Jquery 验证什么都不做?

php - 客户端模板

javascript - 如何防止在 Yii2 中提交多个表单?

Javascript/jQuery - "Cannot call method ' 未定义的推送'当它被定义时

javascript - 从基于 JS 的 AIR 应用程序登录 ColdFusion 站点?

javascript - 更改 Twitter 链接的属性