我正在创建如下的输入元素:
<input type="text" class="form-control" data-bind="value: attr: { name: Data[' + $index() + ']'}" />
我有另一个按钮,通过单击创建上面的多个输入。
我也点击主按钮:
<input type="button" value="Check Data" class="btn btn-primary" data-bind='click: verify.bind($data, event)' />
在我的淘汰赛中,我有:
self.verify= function (data, event) {
//here I want the data that is entered in each of the inputs.
}
在上面的按钮上单击我想获取所有输入的值。在JS中我可以按名称完成元素,它会给我这个元素。但是我怎么能在这里工作呢。
更新的代码:
我的HTML中有这个:
<div data-bind="foreach: { data: myData }">
<div class="form">
<div class="myClass">
<input type="text" class="form-control" data-bind="value: $data.textbox, attr: { name: 'MyData[' + $index() + '].Textbox'}" />
</div>
<div class="myClass">
<input type="button" value="Add More" class="btn btn-primary" data-bind="click: $parent.add"/>
</div>
</div>
</div>
当用户点击“添加更多”时,它会添加更多文本框。 然后我终于有了一个按钮:
<div class="form">
<input type="button" value="Check Data" class="btn btn-primary" data-bind='click: checkData' />
</div>
当用户点击Check Data按钮时,我只需要对文本框中输入的所有数据进行一些验证。验证需要在客户端完成。
在我的淘汰赛中,我有:
this.add = ko.observableArray();
this.add = function () {
self.myData.push(
{
textbox: ""
});
};
this.checkData = function (){
//Here I want to get whats entered in all the textboxes
}
答案 0 :(得分:2)
你的整个方法极有可能是错误的。
视图(HTML页面)用作修改视图模型的工具。验证所需的所有数据都在viewmodel中,因为您已将用户可以更改的所有内容更改为observable
。
function Test() {
var self = this;
self.users = ko.observableArray([
{ name: ko.observable("John Doe") },
{ name: ko.observable("Jane Doe") }
]);
self.verify = function () {
var usernames = self.users().map(function (u) { return ko.unwrap(u.name) });
alert('You have entered these users\n\n' + usernames.join('\n'));
};
}
var vm = new Test();
ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<div data-bind="foreach: users">
<input type="text" class="form-control" data-bind="value: name" /><br>
</div>
<button class="btn btn-primary" data-bind='click: verify'>Check Data</button>