2011-08-12 45 views
0

我试图调用所有与模式AAA * .bbb其中*是100jQuery的日期选择器 - 动态选择

我的代码1之间的数字的ID输入字段是:

 $(document).ready(function(){ 
      $(PATTERN).datepicker({ 
       showOn: 'both' 
      }); 
     }); 

我的问题是:

  1. 如果ID输入字段的一个简直是“aaa.bbb”我用PATTERN = "#aaa\\.bbb"那么我就可以打开日历,但没有日期写入输入字段,当我点击在...上日期...但是,如果我从ID中省略点并使用PATTERN = "#aaabbb"我可以按日历选择一个日期。因此,我得出结论,ID中的点不会让我选择日历中的日期。怎么会这样??

  2. 假设我解决了(1)中的点问题,我实际上只想调用相关的INPUT字段。 (假设输入字段的id是“aaa.bbb”),所以我尝试了一些类似于PATTERN = "input[id$='\\.bbb']" 但它不起作用(日历按钮根本不会出现,即使这里解释为:http://api.jquery.com/category/selectors/为了逃避点字符我“必须用两个反斜杠来逃避字符:\\.” 但是,当我尝试PATTERN = "input[id$='\.bbb']"日历按钮确实出现,但再次点击日历中的日期不会导致日期写入输入(1)和(2)中的点问题,我该如何写出模式是如何写入的?如何在文档中说我只能使用一个“\”来避开这个点?

  3. 假设我解决了的形式aaa * .bbb ???

谢谢!

+0

双反斜线逃生方法仅适用于在'$('#id')'选择器中使用。使用属性选择器不需要它 – Phil

+0

好的,为什么当我点击日历时没有选择日期? – rapt

+0

看到我的答案。我还添加了一个工作演示 – Phil

回答

1

jQuery不幸的是没有“正则表达式”选择器。你可以做的是找到的元素是谁的ID属性与“AAA”开始,以“.bbb”,然后分析每个为

$('[id^="aaa"][id$=".bbb"]').each(function() { 
    var check = this.id.match(/aaa(\d+)\.bbb/); 
    if (check != null && check[1] >= 1 && check[1] <= 100) { 
     // ID matches required pattern 
     $(this).datepicker({ showOn : 'both' }); 
    } 
}); 

演示这里的数字结尾 - http://jsfiddle.net/zjcN7/1/

+0

太棒了!非常感谢!它现在可以工作,你也回答了我所有的其他问题。关于输入字段在点击日历后不接受值,我从演示中发现,这是由于我加载了旧版本的jQuery文件。我只是将版本更新到最新版本,因为它们出现在演示中,并且此问题已解决。我只是jQuery的新手,并不知道我使用的是旧版本。再次感谢你的帮助! – rapt