-2

我正在尝试在 sharepoint 中的 Web 部件的工具部分应用 Java 脚本,以限制用户输入除数字以外的任何字符。我在此链接上找到了合适的脚本

我可以在页面源代码上看到该脚本已在此处注册,但我真的不确定该脚本在此处不起作用的问题。我试图找出火灾错误,但它没有显示任何 java-script 错误。请帮助我知道我可能犯了什么愚蠢的错误。

以下是我在 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。

4

1 回答 1

1

用 asp.net 3.5 和更早版本替换 jQuery 选择器$( "[id$='_txtHeight']" )将为 id 添加前缀。或者,如果您想使用 id 选择器并且可以访问控件属性,则OnPreRender可以使用:

str.AppendFormat("$(document).ready(function() {{$('#{0}').keydown(function(event){{" control.ClientID);

请注意,使用AppendFormat大括号时必须通过将它们加倍来进行转义,例如 {{ 和 }}

于 2013-10-09T19:29:15.187 回答