【问题标题】:jquery autocomplete textbox set value programmaticallyjquery自动完成文本框以编程方式设置值
【发布时间】:2013-09-07 17:55:58
【问题描述】:

我正在使用 jquery 1.8.2 和 jqueryui 1.9.0 库。

我正在尝试向我的表中添加一个“编辑记录”对话框,其中包含 jquery-ui 的自动完成文本框。

我还使用自动完成的更改事件来限制用户从给定列表中选择项目。

我的问题是:当我显示我的编辑表单时,我将现有数据设置到文本框,但是当用户单击编辑表单中的另一个字段时,更改控制器弹出没有任何更改的错误。我发现了许多示例,它们显示了如何为组合框类型自动完成设置值,但我找不到文本框类型的值。请在这个问题上帮助我,我相信您的回答也会对其他用户有用。

这是我的自动完成文本框代码:

    $("#EditMaterialName").autocomplete({
        source: function (request, response) {
            $.ajax({
                type: "POST",
                url: "someurl",
                dataType: "json",
                data: {
                    search_string: request.term
                },
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            label: item.description,
                            value: item.description
                        }
                    }));
                }
            });
        },
        minLength: 2,
        select: function (event, ui) {

        },
        change: function (event, ui) {
            if (!ui.item) {
                $('<div class="error"><b> please select a listed value.</b><div>').insertAfter('#EditMatName');
                $('#EditMaterialName').val('');
            }
        },
        open: function () {
            $(this).removeClass('ui-corner-all').addClass('ui-corner-top');

        },
        close: function () {
            $(this).removeClass('ui-corner-top').addClass('ui-corner-all');

        }
    });

这里是显示编辑记录对话框的代码:

$('a.edit_link').live("click", function () {

        clearEditMaterialForm();

        //loading selected value
        var valMaterialName = $(this).closest('tr').children('td.cl_material_name').text();

        $('#EditMaterialName').val(valMaterialName);

    });

非常感谢您的回答。

【问题讨论】:

    标签: jquery jquery-autocomplete jquery-ui-autocomplete


    【解决方案1】:

    它不漂亮,也许它不正确,但它正在工作:

    function setAutocompletCurrentValue(id, value) {
       $(id).val(value);
       var textToShow = $(id).find(":selected").text();
       $(id).parent().find("span").find("input").val(textToShow);
    }
    

    希望对你有帮助。

    【讨论】:

    • 完美。效果很好。
    • 非常感谢我开始拔头发了,这仍然有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 2021-03-17
    • 2020-09-13
    • 2016-06-27
    • 1970-01-01
    • 2014-11-08
    相关资源
    最近更新 更多