asp.net基于其他文本框值通过JS更新文本框

时间:2013-05-09 14:51:56

标签: c# javascript asp.net datetime textbox

我的asp.net页面上有两个文本框。 一个是今天的日期,一个是有效期,也就是一年之后。

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

我希望第二个文本框能够自动填充23/04/2014

如何将到期日期的日期更新为一年后(无回发) 我怀疑需要一些JS吗?

2 个答案:

答案 0 :(得分: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”,“update('”+ 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中存在。

答案 1 :(得分: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/