自动填充所选文字未按预期保存?昏死

时间:2014-05-21 13:49:45

标签: jquery knockout.js autocomplete

我一直致力于AutoComplete,它实际上很酷,但是当我通过在文本框中输入一个字符从显示的列表中选择某些内容时,它将被放置在文本框中。到目前为止一切都很好

但问题现在来了

当我尝试将文本框中的数据保存到包含其他字段的数据库时。我不知道为什么只有我输入的字符才会被保存,而不是我使用自动完成功能从显示的列表中选择的数据。

请查看我的代码&建议:

自动完成代码

 $('#txtAccountProspectnurture').autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/api/NurtureAccount",
                    data: { id: request.term },
                    dataType: 'json',
                    type: 'GET',
                    success: function (data) {
                        response($.map(data, function (item) {
                            return {
                                label: item.Text,
                                value: item.Value
                            }
                        }));
                    }
                })
            },
            select: function (event, ui) {
                debugger;
                $('#txtAccountProspectnurture').val(ui.item.label); //here i am gettihg fulltext 
                $('#accountnurtureval').val(ui.item.value);
                return false;
            },
            minLength: 1
        });

查看型号:

 self.btnNurtureAddAccount = function () {
        debugger;
        var nurtureaccountids = $("#accountnurtureval").val()
        self.NurtureAccountId(nurtureaccountids);
        $.ajax({
            url: '/api/NurtureAccount/',
            cache: false,
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
      data: ko.toJSON(self), //in this self i am JUST getting single character i entered 
            success: function (data) {
            }
        });
    }

我的API控制器发布方法:

 public bool Post(models m)
        {
           //Here in **m.NurtureAccountName** i am getting only typed letter not the complete one
           //my save code here
        }

感谢任何建议

谢谢:)

1 个答案:

答案 0 :(得分:1)

select函数中,您需要更新viewmodel,而不是使用jQuery手动更新值。

例如,如果你的html是这样的:

<input id="txtAccountProspectnurture" data-bind="value: accountProspectnurture, 
                                                 valueUpdate: 'blur'" />
<input id="accountnurtureval" data-bind="value: accountnurture, 
                                         valueUpdate: 'blur'" />

您可以选择:

select: function (event, ui) {
    viewModel.accountProspectnurture(ui.item.label);
    viewModel.accountnurture(ui.item.value);
    return false;
}

spaninput将由淘汰赛自动更新。