2011-08-12 68 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