jQuery datepicker - 动态选择器

时间:2011-08-12 01:43:55

标签: jquery jquery-selectors

我试图调用id为aaa * .bbb的所有输入字段,其中*是1到100之间的数字。

我的代码是:

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

我的问题是:

  1. 如果id中的一个输入字段只是“aaa.bbb”并且我使用PATTERN = "#aaa\\.bbb"那么我可以打开日历,但是当我点击一个日期时,没有日期写入输入字段date ...但是如果我从id中省略了点并使用PATTERN = "#aaabbb"我可以按日历选择日期。因此,我得出结论,身份证中的一个点不允许我按日历选择日期。怎么可能?

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

  3. 假设我解决了(1)和(2)中的点问题,我怎么写这个模式的形式是aaa * .bbb ???

  4. 谢谢!

1 个答案:

答案 0 :(得分: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/