Javascript 如何在同一页面上验证多个分区中的电子邮件onEqual
情况:Javascript 如何在同一页面上验证多个分区中的电子邮件onEqual,javascript,jquery,validation,knockout.js,Javascript,Jquery,Validation,Knockout.js,情况: <body> <div id="1"> <input type="text" name="email_1"/> <input type="text" name="email_2"/> </div> <div id="2"> <input type="text" name="email_3"/> <input type="text
<body>
<div id="1">
<input type="text" name="email_1"/>
<input type="text" name="email_2"/>
</div>
<div id="2">
<input type="text" name="email_3"/>
<input type="text" name="email_4"/>
</div>
<!--and so on...-->
</body>
我需要验证每个div中这两个输入中的输入是否在div中相等。可能主要问题是所有div都是动态生成的,我们不知道它们的数量以提供淘汰支持。怎么做?最优雅的解决方案是什么
更新1
我试过:
1.使用敲除模型进行一些绑定。但我的解决方案是
创建一些可观察属性来检查输入值。这
我想这是不好的。
2.要对此使用jquery。已尝试通过的验证类验证字段
投入
更新2
我的解决方案是这样的:
<div id="1">
<input type="text" name="email_1"/>
<input type="text" name="email_2"/>
<label data-bind="visible: checkEmailsEquality(email_1,email_2)">Emails must be equal</label>
</div>
但是这个解决方案是不行的,因为这个绑定只工作一次——在页面加载时,什么都不好。我需要将此检查绑定到这些输入中的文本更新,我不知道如何绑定
更新3
我的建议是这样处理:
在第一封电子邮件中输入此绑定
Bind在knockout的模型中具有与Wayne Ellery所写类似的功能。
如果值不相等,则使错误标签可见。
主要条件是将适当的输入ID传递给函数,我想这会起作用。
最简单的方法就是使用一个计算机来比较这两封电子邮件 下面在ViewModel中,我使用jQuery$.map方法将所有项目映射到一个项目对象数组
var ViewModel = function (model) {
var self = this;
self.items = $.map(model.items, function(item) { return new Item(item) });
};
在这里,我使用项目中的计算方法来比较email1和email2
var Item = function (item) {
var self = this;
self.email1 = ko.observable(item.email1);
self.email2 = ko.observable(item.email2);
self.areEmailsSame = ko.computed(function() {
return self.email1() === self.email2();
});
};
我发现可能是最优雅的解决方案,它是关于使用equalTo属性的,例如:
<div id="1">
<input type="text" id="1" name="email_1" equalTo="#2"/>
<input type="text" id="2" name="email_2" equalTo="#1"/>
</div>
希望这能帮助别人。我想你误解了弗林的评论。向我们展示您需要帮助修复的相关代码。别指望我们为你写所有的东西。好吧,很抱歉。我会让你看看我的淘汰赛。因此,我们的想法是传递给knockout的模型函数inputs id并检查它们的值。参见我更新的问题您的解决方案很好,但div元素的数量未知。由于特殊条件,会在页面上生成div。一旦我们有一个div,另一次我们有10个div。这在问题中并不清楚。我会将我的解决方案更新为动态此equalTo属性是什么?我找不到关于它的任何信息