2013-05-09 62 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