2013-03-05 46 views
0

我有一個像下面的html代碼。我想知道如何在JavaScript中動態地標識sessionEventsDecorator [0] .startDateStr,sessionEventsDecorator [1] .startDateStr。目的是爲了確保用戶不輸入年份值大於2013年如何識別javascript中的動態html對象?

<input id="sessionEventsDecorator[0].startDateStr" name="sessionEventsDecorator[0].startDateStr" class="text small" onchange="formDirty();" type="text" value="Mar 05, 2013"/&rt; 


<input id="sessionEventsDecorator[1].startDateStr" name="sessionEventsDecorator[1].startDateStr" class="text small" onchange="formDirty();" type="text" value="Mar 05, 2013"/&rt; 
+0

'的document.getElementById(「sessionEventsDecorator [0] .startDateStr」)'。 .. – crush 2013-03-05 18:49:55

+0

當你說「動態識別」時,你的意思是循環所有的輸入並檢查每一個? – talemyn 2013-03-05 18:51:29

回答

0

好吧,基於對Sebas'回答您的評論獲取值,我覺得這是你在找什麼,基於什麼我們可以看到你的代碼:

var loopIndex = 0; 

while (document.getElementById("sessionEventsDecorator[" + loopIndex + "].startDateStr")) 
{ 
    var inputField = document.getElementById("sessionEventsDecorator[" + loopIndex + "].startDateStr"); 

    . . . logic to check date . . . 

    loopIndex++; 
} 

話雖這麼說,你的div的命名約定是一種混亂。簡化ID將有助於可讀性。此外,如果您可以使用JQuery併爲所有這些輸入提供一個公共類,則有更簡潔的迭代方法。

+0

謝謝@talemyn。我想知道如何對inputField變量的值進行子字符串處理。在Firefox中使用類似inputField.value但在IE中不起作用時,它工作正常 – user1684535 2013-03-05 20:20:07

+0

您在尋找什麼子字符串?類似於'var fieldValue = inputField.value;'將以字符串的形式獲得字段的值(在FF和IE中工作),然後您可以操縱'fieldValue',但不管您喜歡。 – talemyn 2013-03-05 20:32:51

+0

另外,如果你不需要對字段本身做任何事情,你也可以結合這兩個步驟,只是'var fieldValue = document.getElementById(「sessionEventsDecorator [」+ loopIndex +「] .startDateStr」)。 ;'。 – talemyn 2013-03-05 20:33:30

1
document.getElementById("sessionEventsDecorator[0].startDateStr").value <=2013 

這將檢查你。但我認爲你不瞭解IDS如何正確工作。 ID不是動態的,不能用作數組,它們作爲單個html對象的唯一標識符。

類似「sessionEventDecoratorDate0」會更加正常。

如果你想遍歷所有這些,不知道有多少,你可以通過

var counter=0; 
while (true){ 
    var element = document.getElementById("sessionEventsDecorator["+counter+"].startDateStr"); 
    if(element){ 
    counter++; 
    //do logic here on element 
    } 
    else{ 
    break; 
    } 
} 
+0

我想OP想要使用屬性的文本來查找現有對象的屬性。但我可能是錯的。 – 2013-03-05 18:50:15

+0

@ thesystem可能。這有點不清楚。讓我們看看他是否有評論? – 2013-03-05 18:52:52

+0

@ ben336,我想要在JavaScript函數中獲取窗體中所有startDateStr的值。這些startDateStr可以動態添加到表單中。 – user1684535 2013-03-05 18:58:19

0

你應該設置你的元素的id和name屬性更簡單的事情:

<input type="text" class="text small" onchange="formDirty()" name="dateDecorator0" id="dateDecorator0"> 

<input type="text" class="text small" onchange="formDirty()" name="dateDecorator1" id="dateDecorator1"> 

現在我們有一些容易的工作。因此,在我們的Javascript中,我們現在可以使用document.getElementById("dateDecorator"+i).value訪問所有輸入。但老實說,我不知道你爲什麼要這麼做時,你formDirty()函數內部它應該是這個樣子:

function formDirty(){ 
    var val=this.value; 
    if(val.substr(val.indexOf(",")+2) > 2013){ 
     this.value=val.substr(0,val.indexOf(",")+2)+"2013"; 
    }; 
}