在knockout js中读取文本框值

时间:2012-10-31 07:00:03

标签: jquery knockout.js

我正在构建一个可编辑的网格。 礼品名称是一个自动建议文本框。

当我选择一个值并尝试检索该值时,它没有显示该值。 我的代码是[这里](http://jsfiddle.net/bhagirathip/x6H8s/38/)

在文本框中选择一个值,然后单击“提交”按钮。 它应该显示第一个文本框值,但它显示为null。

我犯了错误。

- 提前谢谢

2 个答案:

答案 0 :(得分:2)

这里真正的问题似乎是当你使用jQuery的自动完成时name没有正确更新。您应该更改name的绑定:

<input data-bind="value: name, valueUpdate: 'blur'" class='tags' />

当元素失去焦点时会发生模糊事件。每当它发生时--KO将强制绑定更新值。


KO Documentation

  

<强> valueUpdate

     

如果你的绑定还包含一个名为valueUpdate的参数,那么这个   定义KO应该用来检测更改的其他浏览器事件   除了改变事件。

答案 1 :(得分:0)

我看着你的小提琴,在调用self.gifts()时你似乎错过了几个括号。

这一个:

self.save = function () {
    var abc = $.parseJSON(ko.toJSON({ gifts: self.gifts }));
    alert(abc.gifts[0].name);
};

应该是:

var abc = $.parseJSON(ko.toJSON({ gifts: self.gifts() }));

括号末尾。

您必须记住self.gifts = ko.observableArray(gifts);返回函数中包含的值,因此为了访问该值,您需要调用self.gifts()

运行此示例将显示一个空字符串的警报,因为您使用空名称值初始化了gifts数组。

如果您在此处为名称添加值:

var viewModel = new GiftModel([
    { name: "", price: "" }
]);

然后,您将在警告框中显示该名称。请参阅更新的jsfiddle HERE