我正在尝试在sharepoint中的Web部件的工具部分应用Java脚本,以限制用户输入除数字之外的任何字符。我在this link
上找到了合适的脚本我可以在页面源上看到脚本已在此处注册,但我真的不确定脚本在这里工作不正常。我试图找出fire bug,但它没有显示任何java脚本错误。请帮助我知道我可能犯了什么愚蠢的错误。
以下是我在toolpart.cs上的代码
protected override void OnPreRender(EventArgs e)
{
StringBuilder str = new StringBuilder("<script type='text/javascript'>");
str.Append("$(document).ready(function() {$('#_txtHeight').keydown(function(event){");
str.Append("if ( event.keyCode == 46 || event.keyCode == 8 ) {}else {");
str.Append("if (event.keyCode < 48 || event.keyCode > 57 ) {event.preventDefault();}}});});");
str.Append("</script>");
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "MyChartViewerToolPart" + this.ID, str.ToString());
if (!string.IsNullOrEmpty(errorMessage))
{
this.Zone.ErrorText = string.Format(
"{0}Changes cannot be saved due to one or more errors in input. {1}",
this.Zone.ErrorText, errorMessage);
}
base.OnPreRender(e);
}
_txtHeight是我在后面的代码中的同一页面上的方法CreateChildControls()中创建的文本框的ID。
答案 0 :(得分:1)
将jQuery选择器替换为$( "[id$='_txtHeight']" )
as asp.net 3.5,之前将为id添加前缀。或者,如果您想使用id选择器,并且可以访问OnPreRender
中的控件属性,则可以使用:
str.AppendFormat("$(document).ready(function() {{$('#{0}').keydown(function(event){{" control.ClientID);
注意使用AppendFormat
时,花括号必须通过将它们加倍来转义,例如{{和}}