Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在同一页面上验证多个分区中的电子邮件onEqual_Javascript_Jquery_Validation_Knockout.js - Fatal编程技术网

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属性是什么?我找不到关于它的任何信息