如何在Web部件的工具部分应用脚本?

时间:2013-10-09 09:42:39

标签: javascript jquery asp.net sharepoint web-parts

我正在尝试在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。

1 个答案:

答案 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时,花括号必须通过将它们加倍来转义,例如{{和}}