使用附加javascript强制设置日期文本框的格式在FireFox中不起作用
我试图强制格式化的文本框在IE 8-11和Chrome中工作,但在Firefox中不工作。问题是,在Firefox中,您根本无法更改文本框中的值。它只是卡住了,唯一改变值的方法是盒子旁边的日历。以下是我在相关字段中使用的方法:使用附加javascript强制设置日期文本框的格式在FireFox中不起作用,javascript,.net,firefox,Javascript,.net,Firefox,我试图强制格式化的文本框在IE 8-11和Chrome中工作,但在Firefox中不工作。问题是,在Firefox中,您根本无法更改文本框中的值。它只是卡住了,唯一改变值的方法是盒子旁边的日历。以下是我在相关字段中使用的方法: public static void RegisterMask(System.Web.UI.Page Caller) { System.Text.StringBuilder strMask = new System.Text.Strin
public static void RegisterMask(System.Web.UI.Page Caller)
{
System.Text.StringBuilder strMask = new System.Text.StringBuilder();
strMask.Append("<script language=\"javascript\">");
strMask.Append("function maskKeyPress(objEvent) {");
strMask.Append(" var iKeyCode = objEvent.keyCode; ");
strMask.Append("if(iKeyCode>=48 && iKeyCode<=57){return true;}");
strMask.Append("else{");
strMask.Append("return false;}}");
strMask.Append("</script>");
strMask.Append("<script language=\"javascript\">");
strMask.Append(" function mask(str,textbox,loc,delim,event){");
strMask.Append("if (maskKeyPress(event)== false){return false;}");
strMask.Append("var locs = loc.split(',');");
strMask.Append("for (var i = 0; i <= locs.length; i++){");
strMask.Append("for (var k = 0; k <= str.length; k++){");
strMask.Append(" if (k == locs[i]){");
strMask.Append(" if (str.substring(k, k+1) != delim){");
strMask.Append(" str = str.substring(0,k) + delim + str.substring(k,str.length)}}}}textbox.value=str}");
strMask.Append("</script>");
System.Web.UI.ScriptManager.RegisterClientScriptBlock(Caller, Caller.GetType(), "Mask", strMask.ToString(), false);
}
protected override void Page_Load(object sender, EventArgs e)
{
RegisterMask(this.Page);
if (!Page.IsPostBack)
{
pMask(this.Page, ref txtStart, "/", "2,5");
pMask(this.Page, ref txtEnd, "/", "2,5");
}
}
<cs:Row runat="server" ID="rwStartDate">
<LabelTemplate><asp:Label runat="server" ID="lbltxtStart" AssociatedControlID="txtStart">Start</asp:Label></LabelTemplate>
<ControlTemplate>
<asp:TextBox runat="server" ID="txtStart" Width="100" EnableViewState="true" AutoPostBack="true"/>
<asp:RequiredFieldValidator runat="server" ID="rfvStartDate" ControlToValidate="txtStart" ErrorMessage="Invalid Date" SetFocusOnError="true" CssClass="validator">*</asp:RequiredFieldValidator>
<asp:CustomValidator runat="server" ID="csvStart" ControlToValidate="txtStart" ErrorMessage="Invalid Date" SetFocusOnError="true" CssClass="validator" ClientValidationFunction="Validator.validateDate" />
<asp:HyperLink NavigateUrl="#" runat="server" ID="lnkCalStart" ToolTip="Toggle Calendar" CssClass="calendar" />
<ajax:CalendarExtender runat="server" ID="ajxStart" OnClientDateSelectionChanged="calendarExtenderHelper" Animated="false" PopupPosition="Right" Format="M/d/yyyy" TargetControlID="txtStart" PopupButtonID="lnkCalStart" BehaviorID="ajxCalStart" />
</ControlTemplate>
</cs:Row>
原来是firefox不支持onkeypress,需要改为onkeyup。numpad也有问题,需要另一组密钥码