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>
AAAAH!該代碼! – MarioDS