Javascript在gridview的文本框中返回正确的时间格式

Javascript return correct time format in textbox contained in gridview

本文关键字:时间 格式 返回 gridview 文本 Javascript      更新时间:2023-09-26

我试图在文本框中输入一个时间,如果它发现自己缺少:字符,就会自动更正。所以当用户退出文本框

时0100变成01:00

它也包含在gridview中。

这是我尝试过的,但我没有得到任何事情发生。

 function four_digit_clock() 
   {
       var grdvw = document.getElementById('<%= grd_issue_am.ClientID %>');
       for (var rowId = 1; rowId < grdvw.rows.length; rowId++) {
           var txtbx = grdvw.rows[rowId].cells[0].children[0];
           if (txtbx != "" || txtbx.length != 0 || txtbx != null) {
               if (txtbx.length == 4) {
                   var clock = txtbx.value;
                   if (clock.substring(2, 1) != ':') {
                       txtbx.value = txtbx.value.substring(0, 2) + ':' + txtbx.substring(2, 2);
                   }
               }
           }
       }  
   }  
 **html**
 <asp:TextBox runat="server" ID="txt_grd_am_clock_in" onblur ="javascript: four_digit_clock();"/>

是我完全搞错了树,还是我只是错过了什么?

子字符串是这样工作的substring(startpos,endpos)。请注意,endpos与字符串长度不同!例如:a="1234"使a.stringpos(1,3) -> "23"

所以你的评论(clock.value.length-2,2)还是错的。你可能指的是substring(clock.value.length-2, clock.value.length)

这也意味着你的clock.substring(2, 1);是错误的。(它实际上是可逆的:clock.substring(1, 2);是一样的!)你想要的是clock.substring(2, 3);。(假设字符串像"15:30")。


让事情变得更简单。您可以使用this关键字来定位文本框:我可能会这样做:

 onblur="this.value=four_digit_clock(this.value);" 

function four_digit_clock( val ){
   if (val.length < 4 || val.substring(2,3) == ":" ) {
       return val;
   }
   return val.substring(0, 2) + ':' + val.substring(2, 4);
} 

我没有在c#上下文中尝试过,但是javascript可以工作。http://jsfiddle.net/mg4gwkmb/