使用javascript asp.net将在文本框中输入的日期更改为其他格式

时间:2012-10-15 03:08:51

标签: javascript asp.net

我一直在寻找论坛和教程,我似乎无法弄清楚这一点。我是asp.net和网页设计的新手(html等);我已经使用winforms和vb.net几个月了。

我在页面上有一个文本框(ID = DOBTextbox),我正在尝试实现javascript代码,当文本框文本长度至少为6个字符时(或者更好,可以评估为日期),文本更改为特定的日期格式(最好是MMM dd,yyyy,但我愿意使用内置的javascript日期转换器功能,使其接近)。我想使用javascript,因为我希望它是客户端驱动的。

按照这些行中的许多示例,我理解我需要在源文件中创建一个函数,并且我可以向我的代码隐藏文件添加一个属性。

<script type="text/javascript">
function reformatDate(inputDate) {
    var outputDate = inputDate.toString();
    return outputDate;
}
</script>

在我的代码隐藏中:

DOBTextBox.Attributes.Add("onblur", "reformatDate('" & DOBTextBox.Text & "')")

然而,当我离开文本框时没有任何反应。

注意:我使用“onblur”因为我一直在尝试。我的第一个偏好是当用户更改文本框的文本时触发的事件。另外,我在我的函数中使用了“.tostring()”,因为我收到一个错误,说todatestring()无法识别(我认为todatestring()输出更接近我喜欢的格式。)

提前感谢您的帮助!!!

1 个答案:

答案 0 :(得分:1)

你可能想要这个:

DOBTextBox.Attributes.Add("onblur", "reformatDate(this.value);")

使用您的代码,您正在尝试组合ASP.NET代码和JavaScript。 ASP.NET在发送到浏览器时是静态的,javascript是动态的。当您使用代码时,您将在ASP.NET代码运行到属性时硬编码文本框的值。所以HTML可能会呈现如下:

<input type="text" id="whatever" name="whatever" value="10/24/2001" onblur="reformatDate('10/24/2001')" />

通过我的更改,它将使javascript在模糊时抓取文本框的值并将其传递给reformatDate函数。因此它将呈现为:

<input type="text" id="whatever" name="whatever" value="10/24/2001" onblur="reformatDate(this.value)" />

您可能想要的是使用onchange,而不是onblur,以便该功能仅在文本框的值更改时触发,而不仅仅是文本框模糊。

更新:

ASP.NET代码需要更改为:

DOBTextBox.Attributes.Add("onblur", "this.value = reformatDate(this.value);")

以便将文本框的值重新设置为转换后的值。

UPDATE2:

尝试将您的功能更改为:

function reformatDate(inputDate) {
    if (inputDate.length > 5) {                  // Least amount of characters for possible date
        var outputDate = new Date(inputDate);    // Convert input to date object
        if (!isNaN(outputDate.getTime())) {      // Makes sure the date is valid
            return outputDate.toDateString();    // Return formatted date only if valid
        }
    }
    return inputDate;    // Return original value if invalid date
}