使用javascript将文本框中的用户输入格式化为HH:mm:ss
我在格式化和验证时间字段asp:textbox时遇到问题,只使用javascript,不使用JQuery。我希望用户在文本框中输入6个数字,如果它们有效,则插入冒号,但不允许用户输入无效数字。因此,如果插入的时间是235959,则在离开字段后或实时插入时,将格式设置为23:59:59。或者,如果输入的数字是无效的,比如输入25表示小时,用户甚至无法输入25中的5。我根本没有真正处理时间问题,我真的很挣扎 我必须承认,我以为这会更容易。我主要搜索在线论坛,只能实现部分解决方案,比如我可以插入冒号,但不能验证数字。示例:如果24输入为小时,则更改为00。我可以很容易地单独完成这项工作,但我想我正在努力让所有的部分协同工作。希望我能充分解释我自己。我还尝试了一系列的if语句来验证时间,但结果非常混乱 我在网上找到了冒号插入函数,但无法使其与数字验证一起使用 更新1:只是尝试将intFieldLength嵌套在intValidNum中,因此如果前两个数字小于24,则执行intFieldLength,但这不起作用。还在努力 Update2:删除intFieldLength变量只是为了我的可读性。添加了一些代码,试图强制用户输入正确的小时数,如果用户输入24作为小时数,它将转换为00。正在尝试执行与当前分钟和秒相似的操作 更新3:添加一个切片以选择mm和<60条件。尝试添加==60条件,以便如果mm为60,则返回00使用javascript将文本框中的用户输入格式化为HH:mm:ss,javascript,asp.net,vb.net,Javascript,Asp.net,Vb.net,我在格式化和验证时间字段asp:textbox时遇到问题,只使用javascript,不使用JQuery。我希望用户在文本框中输入6个数字,如果它们有效,则插入冒号,但不允许用户输入无效数字。因此,如果插入的时间是235959,则在离开字段后或实时插入时,将格式设置为23:59:59。或者,如果输入的数字是无效的,比如输入25表示小时,用户甚至无法输入25中的5。我根本没有真正处理时间问题,我真的很挣扎 我必须承认,我以为这会更容易。我主要搜索在线论坛,只能实现部分解决方案,比如我可以插入冒号,
<asp:TextBox ID="txtEndTime" runat="server" MaxLength="8" placeholder="HH:MM:SS" onkeypress="formatTime(this)" />
函数formatTimeInput{
intValidNum=timeInput.value;
如果intValidNum<24{
如果intValidNum.length==2{
timeInput.value=timeInput.value+:;
返回false;
}
}
如果intValidNum==24{
如果intValidNum.length==2{
timeInput.value=timeInput.value.length-2+0:;
返回false;
}
}
如果intValidNum>24{
如果intValidNum.length==2{
timeInput.value=;
返回false;
}
}
//这就是我难以瞄准目标的地方
//mm和ss,以添加条件,见上文hh。
//我用slice来帮助我。
//如果你们有任何建议/改进/更正,请告诉我。
如果intValidNum.length==5&&intValidNum.slice-2<60{
timeInput.value=timeInput.value+:;
返回false;
}
如果intValidNum.length==5&&intValidNum.slice-2>60{
timeInput.value=timeInput.value.0,2+:;
返回false;
}
如果intValidNum.length==5&&intValidNum.slice-2==60{
timeInput.value=timeInput.value.0,2+:00:;
返回false;
}
如果intValidNum.length==8&&intValidNum.slice-2>60{
timeInput.value=timeInput.value.0,5+:;
返回false;
}
如果intValidNum.length==8&&intValidNum.slice-2==60{
timeInput.value=timeInput.value.0,5+:00;
返回false;
}
}//结束函数
你可能已经看过了。但以防万一,我相信这就是你要找的 在操作过程中需要注意的一点是,您可能需要读取一个整数>-1,然后尝试此操作
String dateString = dateTextBox.Text;
String formats = "MM/dd/yyyy";
DateTime dateValue;
if (DateTime.TryParseExact(dateString, formats,
new CultureInfo("en-US"),
DateTimeStyles.None,
out dateValue))
{
// That means the value of the date is in the specified format..
}
不要忘记使用系统。全球化 看起来我已经回答了我的问题,但我希望得到建议/更正/增强 函数formatTimeInput{ intValidNum=timeInput.value; 如果intValidNum<24&&intValidNum.length==2{ timeInput.value=timeInput.value+:; 返回false; } 如果intValidNum==24&&intValidNum.length==2{ timeInput.value=timeInput.value.length-2+0:; 返回false; } 如果intValidNum>24&&intValidNum.length==2{ timeInput.value=; 返回false; } 如果intValidNum.length==5&&intValidNum.slice-2<60{ timeInput.value=timeInput.value+:; 返回false; } 如果intValidNum.length==5&&intValidNum.slice-2>60{ timeInput.value=timeInput.value.0,2+:; 返回false; } 如果intValidNum.length==5&&intValidNum.slice-2==60{ timeInput.value=timeInput.value.0,2+:00:; 返回false; } 如果intValidNum.length==8&&intValidNum.slice-2>60{ timeInput.value=timeInput.value.0,5+:; 返回false; } 如果intValidNum.length==8&&intValidNum.slice-2==60{ timeInput.value=timeInput.value.0,5+:00; 返回false; } }//结束函数
你试过使用TextMode=Time-format=HH:mm吗?我试过了,但我的asp:TextBox无法使用。我相信这是因为它被隐式定义为text maybe?谢谢,几天前我确实遇到过这个问题,但我的文本框中的TextMode=Time似乎给了我一个验证错误:该属性允许的值不包括“Time”。可能是因为我们正在使用asp.net 4.0。。。我想\啊 好啊我认为你关于asp.NET4.0的逻辑是有道理的。很抱歉,我不能解决你的问题。但希望它能帮助你走上正轨。一定要让我们知道你发现了什么!