2017-08-14 124 views
0

我正在处理文本框上的JQuery循环,以便无论何时classname =“xyz”,那么它需要将datetime控件放在那里,其他文本框需要作为常规文本框工作,我设置了验证。我无法循环使用Jquery .each。如果我错过了一些东西,有人能告诉我吗?JQuery循环不起作用

<script> 
    $(".xyz").each(function() { 

     if ($(this).hasClass('xyz')) { 
      $(".xyz").datepicker(); 
     }}) 
</script> 

<asp:TextBox ID="txt" runat="server" CssClass="xyz"></asp:TextBox> 
+2

这与您的代码中出现的顺序相同吗? – maccettura

+0

@maccenttura:是的。有什么不对的 – user3147594

+0

只需要'$(“。xyz”)。datepicker();'就够了,现在你正在循环所有元素的类'xyz',然后检查它是否有'xyz'类,然后应用对所有具有类“xyz”的元素使用datepicker。 –

回答

0

您不需要第二个类选择器。在循环内部,您已经使用“xyz”类定位每个元素。所以只需使用“this”关键字来执行您的操作。

<script> 
    $(".xyz").each(function() { 
     $(this).datepicker(); 
    }); 
</script> 

<asp:TextBox ID="txt" runat="server" CssClass="xyz"></asp:TextBox> 
+0

我仍然无法通过xyz类的文本框循环并将日期时间选择器附加到它。它仅适用于第一个元素。在代码后面我有:txt.Attributes [“CssClass”] =“xyz”; – user3147594

+0

在上面运行这个,你会发现在你的JavaScript运行时有多少元素被选中。警报($( “XYZ”)的长度。);听起来像你有一个更大的问题,那么你在这里发布了什么。 – Seano666

+0

我添加了警报,它返回3,因为我有3个文本框。根据要求,文本框需要表现为phno时接受电话号码的两个文本框。是从下拉列表中选择的,如果用户选择日期,则该文本框需要像datetimepicker一样行事。 – user3147594

1

jquery选择器(如$(".xyz"))返回一组元素。将方法附加到选择器时,该方法适用于该集合中的所有元素。

因此,而不是一个循环的,你只需要

$(".xyz").datepicker(); 

jQuery将做循环为您服务。它将

  1. 获取一类的xyz
  2. 在列表中的每个元素中的所有元素的列表,运行datepicker()方法。

您只需要each是当您想提供自己的功能时,在这种情况下不需要。

0

我已经解决了这个问题,认为它可能对未来某个人有所帮助。这里的解决方案: 在文本框:

<asp:TextBox ID="abc" runat="server" CssClass="f-c"></asp:TextBox> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".ee").each(function() { 
      if ($(this).hasClass('ee')) { 
       //alert($(".ee").length) 
       $(this).datepicker(); 
      } 

     }) 
    }); 
</script> 

后面的代码:

abc.CssClass = abc.CssClass + "ee"; 

使用该文本框既用作常规文本框和日期选择器。