2012-09-07 21 views
7

我面臨我的jQuery UI日期選取器的一個小問題。 的事情是,我有我的網頁和一些像這樣的輸入:datepicker適用於錯誤的字段

blabla | blabla | .date-picker | blabla 
blabla2 | blabla2 | .date-picker | blabla2 
blabla3 | blabla3 | .date-picker | blabla3 

所以「布拉布拉」只是一些文字,而「.date選取器」是一個輸入,用「日期選取器'班。

在我的JavaScript代碼,我剛纔以下幾點:

$(function() { 
    $('.date-picker').datepicker(); 
}); 

但舉例來說,如果我點擊,而不是更新正確輸入就行了「blabla3」的輸入,它總是更新第一一個...

我的輸入都相同的ID(我不能改變它),但我使用了類輸入我的選擇,所以它應該工作,但沒有。

+0

相同的ID衝突! – AlphaMale

+0

具有相同ID的多個元素是無效的,如果您選擇這樣做,我們無法控制任何行爲。 – sevenseacat

回答

2

你應該改變你的輸入的id,否則它將不起作用,因爲當你選擇任何日期時,它使用DP_jQuery_1347006322116.datepicker._selectDay('#same',8,2012, this);return false;這個函數selectDay,並且它將輸入的id作爲id。

所以如果你有多個ID,它會首先選擇輸入並設置一天都有。

+0

感謝您的明確解釋!爲了做到這一點,沒有改變ID的真的沒有可能?因爲如果我更改輸入的id,表單背後的PHP代碼將不得不改變......在我的頁面上,我使用datepicker僅選擇年份和月份,並使用以下代碼:http:// pastebin。 com/rnDSKnvp 它工作得很好。 有沒有解決方案在上面的代碼中添加一天? – user1506157

2

我有類似的問題,其中,我會使用JavaScript來動態地添加含有具有相同ID代碼的日期字段新DIV容器。在我的情況下,解決的唯一方法是動態地重寫所有的ID然後銷燬/創建日期選擇器功能:

var n=0;  
$("[id*='blabla']").each(function(){ 
    n++; 
    tempField = this.id.split("-"); 
    this.id = tempField[0]+"-"+n; 
    }); 

// first remove datepicker functionality since renaming of id above then    
// add datepicker to any field with "datepicker" as class 

    $("input.datepicker").datepicker("destroy").datepicker(); 

我修改了上面,以滿足您的使用情況下(我認爲)。希望這可以幫助。

BTW:我是一個連字符(「 - 」)分裂的原因是因爲我可以再每次我動態地創建帶有日期選擇字段的另一個DIV容器時調用這個函數。它將按順序對所有ID進行系統重命名,以便後面的表單處理。

+0

男人我幾乎想downvote那個由於其黑客核心的性質,和醜陋的代碼..大聲笑。我認爲這是一個更好的方法,並且不會對這個實現感到滿意 – blamb

4

你好舊的文章,但它是爲那些誰仍然面臨這個問題...

只需刪除新輸入的id,日期選擇器總是生成一個新的ID,即如果輸入沒有之一。如果它有一個datepicker會保留這個,這意味着在這裏第一個輸入被克隆,最後一個也會被更新。

+2

建立一個工作代碼,它會更容易。 –

+0

經過測試,這是正確的,一旦我刪除ID字段由日期選取器生成一個唯一的字段,謝謝! – sMyles