2015-10-20 11 views
0

我試圖強制格式化的文本框在IE 8-11和Chrome,但不是Firefox的作​​品。問題是,在Firefox中你根本不能改變文本框中的值。它只是卡住只能改變值的方式是框旁邊的日曆。以下是我正在使用的相關領域的方法:強制日期文本框的格式使用附加的JavaScript不工作在FireFox

 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> 
+0

AAAAH!該代碼! – MarioDS

回答

0

原來,這是onkeypress不被Firefox支持,需要更改爲onkeyup。數字鍵盤也有問題,需要另一組鍵碼。

相關問題