Javascript 使用knockout按名称获取元素
我正在创建如下输入元素:Javascript 使用knockout按名称获取元素,javascript,knockout.js,Javascript,Knockout.js,我正在创建如下输入元素: <input type="text" class="form-control" data-bind="value: attr: { name: Data[' + $index() + ']'}" /> 在上面的按钮上,单击我想要获得所有输入的值。在JS中,我可以按名称完成元素,它会给我那个元素。但是我怎样才能让它在这里工作呢 更新代码: 我的HTML中有以下内容: <div data-bind="foreach: { data: myData
<input type="text" class="form-control" data-bind="value: attr: { name: Data[' + $index() + ']'}" />
在上面的按钮上,单击我想要获得所有输入的值。在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>
很可能你的整个方法都是错误的
- 您的HTML输入元素不需要名称李>
- viewmodel方法不需要了解显示其值的HTML元素的任何信息李>
- 您不需要使用特殊参数绑定事件处理程序
功能测试(){
var self=这个;
self.users=ko.array([
{名称:ko.observable(“John Doe”)},
{名称:ko.observable(“Jane Doe”)}
]);
self.verify=函数(){
var usernames=self.users().map(函数(u){return ko.unwrap(u.name)});
警报('您已输入这些用户\n\n'+用户名。加入('\n'));
};
}
var vm=新测试();
ko.应用绑定(vm)代码>
检查数据
您的整个方法极有可能是错误的
- 您的HTML输入元素不需要名称李>
- viewmodel方法不需要了解显示其值的HTML元素的任何信息李>
- 您不需要使用特殊参数绑定事件处理程序
视图(HTML页面)用作修改viewmodel的工具。您需要验证的所有数据都在viewmodel中,因为您已经使用户可以更改的所有内容都可以观察到
功能测试(){
var self=这个;
self.users=ko.array([
{名称:ko.observable(“John Doe”)},
{名称:ko.observable(“Jane Doe”)}
]);
self.verify=函数(){
var usernames=self.users().map(函数(u){return ko.unwrap(u.name)});
警报('您已输入这些用户\n\n'+用户名。加入('\n'));
};
}
var vm=新测试();
ko.应用绑定(vm)代码>
检查数据
您需要元素名称做什么?你没有通过Ajax提交表单数据吗?是的,我有两个按钮。使用上面的按钮,我只是对输入进行一些验证。使用另一个按钮,我正在进行实际提交,问题是“您不通过Ajax提交表单数据吗?”。是的,我通过Ajax提交表单数据。在提交表单时,我可以很好地获得模型中的值。但我希望这些文本框值位于客户端。在示例的第一行中设置this。将添加到observableArray,一行之后设置this。将添加到函数。决定这应该是什么。添加元素名的目的是什么?你没有通过Ajax提交表单数据吗?是的,我有两个按钮。使用上面的按钮,我只是对输入进行一些验证。使用另一个按钮,我正在进行实际提交,问题是“您不通过Ajax提交表单数据吗?”。是的,我通过Ajax提交表单数据。在提交表单时,我可以很好地获得模型中的值。但我希望这些文本框值位于客户端。在示例的第一行中设置this。将添加到observableArray,一行之后设置this。将添加到函数。你决定这个应该是什么。添加。我已经更新了我的代码。您可以检查我正在查找的内容。您的数据(textbox
)不可见。用户可以更改的任何内容都必须是可观察的。我的代码正好显示了您需要执行的操作。我已更新了我的代码。您可以检查我正在查找的内容。您的数据(textbox
)不可见。用户可以更改的任何内容都必须是可观察的。我的代码正好显示了您需要做什么。
self.verify= function (data, event) {
//here I want the data that is entered in each of the inputs.
}
<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>
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
}