使用附加的javascript强制日期格式文本框在FireFox中不起作用
Forcing Format for Date textbox using appended javascript not working in FireFox
我试图强制格式化的文本框在IE 8-11和Chrome中有效,但在Firefox中无效。问题是,在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>
原来是firefox不支持onkeypress,需要更改为onkeyup。在numpad上也有一个问题,它需要另一组键码。
相关文章:
- 测试文本区域中的特定文本格式
- 防止Javascript注入(但保留文本格式和图像)
- 我有来自OpenWeatherMap API的风向数据,数据以0到360度表示.我想将其转换为文本格式
- 设置要显示的文本格式的指令
- IndexedDB:将 url 映射到接受的 markdown/HTML 文本格式标记的正确架构
- 时刻.js文本格式和类
- 在动态创建的文本框中设置文本格式
- 购物清单 Javascript 程序列表项的文本格式不正确
- 使用 drive.files.export (Drive API v3) + API 密钥以文本/纯文本格式获取公共 G
- 如何使用 jQuery 将段落的原始文本格式放入 HTML 段落元素中
- 如果文本格式化为 html,则使用 angularjs 显示更少/更多的文本
- 如何在打印时保留存储在数据库中的文本格式
- Google Apps脚本中Google文档中字符串的文本格式
- jQuery之后的文本格式问题
- 如何在jQuery中保持粘贴时的文本格式
- P:输入文本格式数字,如'999,999'
- 删除复制+粘贴的富文本格式?(跨浏览器)
- 在文本框中设置文本格式
- 如何在HTML textarea>中设置文本格式?
- 如何使用PHP在电子邮件中以HTML/文本格式发送Javascript