2012-09-06 24 views
1

日期選取器有一個奇怪的問題。他只能在動態表格的第一行上工作。日期選取器僅適用於第一行

 $(document).ready(function() { 
     $(".Data1").datepicker({ 
      showOn: "button", 
      buttonImage: "/calendar.png", 
      buttonImageOnly: true, 
      changeMonth: true, 
      changeYear: true 

     }); 
    }); 

這裏的我的JavaScript來創建一個新的行:

function addRow(tableID) { 
      var table = document.getElementById(tableID); 
      var rowCount = table.rows.length; 
      var row = table.insertRow(rowCount); 
      var colCount = table.rows[0].cells.length; 
      for (var i = 0; i < colCount; i++) { 
       var newcell = row.insertCell(i); 
       newcell.innerHTML = table.rows[1].cells[i].innerHTML; 
       newcell.className = "clastest"; 
       if (i == 3) { 
            newcell.getElementsByTagName("input")[0].id="StartD"+rowCount; 
           } 
           if (i == 4) { 
            newcell.getElementsByTagName("input")[0].id = "EndD" + rowCount; 
           } 
           if (i == 5) 
           { 
            newcell.getElementsByTagName("input")[0].id =rowCount; 
           } 

      } 
     } 

這裏是HTML

  <td> 
       @Html.TextBox("Pozition", poz, new { @style = "width:50px;", @id = "Pozition" }) 
      </td> 
      <td> 
       @Html.TextArea("Description", des, new { @style = "width:250px; min-height:50px;", @id = "Description" }) 
      </td> 
      <td> 
       @Html.TextBox("StartDate", di, new { @class = "Data1", @id = "StartD" }) 
      </td> 
      <td> 
       @Html.TextBox("EndDate", de, new { @class = "Data1", @id = "EndD" }) 
      </td> 

爲什麼它僅適用於第一行的任何想法,而不是對所有?

回答

4

問題是你沒有添加事件到新創建的元素,當你添加datepicker函數只適用於第一行,因爲它是唯一創建時,dom準備好了,你需要每次添加新行時再次添加事件。

你有2種選擇:

  1. 做什麼,他們在這裏解釋一下這是最理想的: Event binding on dynamically created elements?
  2. 或將日期選擇器代碼的函數(不是最優):
function addDatePicker(){ 
     $(".datepicker").datepicker({ 
     showOn: "button", 
     buttonImage: "/calendar.png", 
     buttonImageOnly: true, 
     changeMonth: true, 
     changeYear: true 
     }); 
} 

然後添加addDatePicker()addRow()函數的結尾

+0

它不工作,如果我有兩個datapikers :(基本上,如果我有兩個功能,行爲是相同的。但是,如果我只有該功能,它只適用於第一行,如果我添加第二行(這是邏輯)。但是,我如何初始化它的第一行? –

+0

哦,我明白了,問題在於CSS選擇器,您是否在所有輸入中都有「clastest」類?如果你給我更多的標記,我可以幫助你,如表格的ID,如果它有更多的表或它只是一個。 – Skatox

+0

只有一個

相關問題