2013-05-09 60 views
0

我的asp.net頁面上有兩個文本框。 一個是今天的日期,一個是從現在起一年後的失效日期。asp.net通過基於其他文本框值的更新文本框

因此,如果第一個文本框包含23/04/2013

我想第二個文本框與23/04/2014

自動填充如何更新到期日的日期整整一個一年後(無回傳) 我懷疑需要一些JS對不對?

回答

1

此答案使用jQuery讀取日期,解析零件並在年份中添加一個零件。但是,它不會檢查輸入日期的有效性,因此在第一個文本框中輸入字母會生成日期「NaN/NaN/NaN」。你可以將它與jQuery UI的DatePicker結合起來,以確保輸入是有效的日期。在這種情況下,您將使用change事件而不是keyup

HTML:

<input id="today" type="text" /> 
<input id="future" type="text" /> 

的Javascript:

$(document).ready(function() { 
    $('#today').keyup(function() { 
     var today = new Date($(this).val()); 
     if (today != NaN) { 
      var dd = today.getDate(); 
      var mm = today.getMonth(); 
      var y = today.getFullYear(); 
      $('#future').val(dd + '/' + mm + '/' + (parseInt(y)+1)); 
     } 
    }); 
}); 

工作例如:http://jsfiddle.net/6vs5y/

1
function update(sourceTBId, targetTBId){ 
    document.getElementById(targetTBId).value = document.getElementById(sourceTBId); 
} 


<input type='button' onclick="update('<%=textbox1.ClientID%>', '<%=textbox2.ClientID%>')"/> 

其中textbox1是源,2是目標。

噢,對不起,你不由自主地說...

在後面的代碼做到這一點

textbox1.Attributes.Add( 「的onkeyup」, 「更新( ' 」+ textbox1.ClientID +「',「」 + textbox2.ClientID + 「')」);

至於日期,如果您確定這將是DD/MM/YYYY那麼這應該這樣做(有可能是更優雅/更好的方式 - 如果格式是錯誤的,這將失敗 - 也是這個全都是空氣代碼,請檢查它)

function update(sourceTBId, targetTBId){ 
    var dateString = document.getElementById(sourceTBId); 
    var dateParts = dateString.split("/"); 
    var dd = dateParts[0]; 
    var mm = dateParts[1]; 
    var yy = 1 + parseInt(dateParts[2]); 

    document.getElementById(targetTBId).value = dd+'/'+mm+'/'+yy; 
} 

會好得多使用任何日期解析和格式的方法,但我沒有足夠的熟悉,迅速地說,這是否即使在JS存在。

+0

謝謝,但我知道按鈕絕招。我需要它做同樣的事情,但沒有任何按鈕/點擊。所以當用戶離開文本框1時,textbox2應該自動更新。我想JS也計算新的日期。那可能嗎? – 2013-05-09 14:59:56

+0

當然,只是改變我在onblur – 2013-05-09 15:01:00

+0

修改後的答案好吧,這是有道理的,但如何在JS中處理Date(),以便我可以從textbox1添加1年的日期,然後顯示在textbox2? – 2013-05-09 15:15:10