2013-10-09 22 views
-2

我试图在Sharepoint的Web部件的工具部分上应用Java脚本,以限制用户输入除数字以外的任何字符。我找到了一个合适的脚本this link如何将脚本应用于Web部件的工具部分?

我可以在页面上看到脚本已经在这里注册,我试图找出火灾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

将jQuery选择器替换为$("[id$='_txtHeight']") as asp.net 3.5,并且更早版本会为该id添加前缀。另外,如果你想使用的ID选择,您可以在OnPreRender访问控制属性,你可以使用:

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

注意事项使用AppendFormat花括号时,必须通过他们,例如加倍转义{{and}}

相关问题