2012-11-20 90 views
0

我不知道如何解釋什麼,我想這樣做這裏是我的代碼的短版:添加默認值來動態添加的行

var counter = 1; 
    var currDate = new Date(), 
    today = (currDate.getMonth() + 1) + '/' + currDate.getDate() + '/' + currDate.getFullYear(); 
    $("#btnAdd").click(function (event) { 
     addRow = "<tr><td><input type='text' class='dateClass defaultDate' id='txtDate" + counter + "'/></td></tr>"; 
     event.preventDefault(); 
     counter++; 
     $("#tblName").append(addRow); 
     $("#txtDate" + counter).val(today); 
     $(".dateClass").datepicker(); 
    }); 

動態添加的行包含一個文本框然而,用戶選擇的日期,默認情況下,這個值將是當前日期。現在,我的問題是,每次單擊添加行按鈕時,前面的文本框的值將恢復爲默認日期,即使我已經爲它設置了不同的日期。

我知道它是因爲每個添加的行都有類名defaultDate,所以我想我必須使用id,而不是txtDate + counter(即txtDate2),但我不確定這是正確的做法。所以基本上,我如何告訴按鈕,當它添加一個新行時,它只會將默認日期設置爲新行,並且不應該更改前一行的當前值?

+0

你應該有VAR計數器= 1的功能外,否則​​的ID將永遠是一樣。 – Anton

+0

謝謝!我去做。 – user1597438

回答

2

你又

  1. 使用計數器
  2. 計數器加一
  3. 使用計數器做的事情以一種奇怪的順序

問題是3倍以上incrememnted。就在這條線移動:

counter++ 

此行之後:

$("#txtDate" + counter).val(today); 

活生生的例子:http://jsfiddle.net/Nmk39/

+0

非常感謝。你的解釋很簡短,但很清楚。 – user1597438

1

嘗試把櫃檯

var counter = 1; 

出的所有功能的定義,否則就不是一個全局變量,而且,在每一個按鈕,點擊重置爲值1,所有的按鈕具有相同的ID。

然後,值需要通過指的的ID來分配:

$("#txtDate" + counter).val(today); 

否則與類所有的輸入復位。

+0

謝謝,我會試試看。 – user1597438

+0

好吧,所以我給它一個快速嘗試,但它只是創建一個空的文本框的新行。我已更新我的代碼以顯示它當前的樣子,包括今天的變量值。 – user1597438

+1

counter ++;應該在該函數的最後;因爲計數器變量在函數中使用了兩次,但是值不同 – jcjr

1

嘗試了這一點

var counter = 1; 
     var currDate = new Date(), 
     today = (currDate.getMonth() + 1) + '/' + currDate.getDate() + '/' + currDate.getFullYear(); 
     $("#btnAdd").click(function (event) { 
      addRow = "<tr><td><input type='text' class='dateClass defaultDate' value='"+today+"'id='txtDate" + counter + "'/></td></tr>"; 
      event.preventDefault(); 
      counter++; 
      $("body").append(addRow); 
      $(".dateClass").datepicker(); 
     }); 
+0

謝謝你的幫助! – user1597438