2

我正在尝试设置多行文本框的最大长度。我遇到的障碍是我无法在页面加载时使用 javascript 设置它,因为它位于 InsertItemTemplate 中。在页面加载时,它会引发一个 javascript 错误(错误:无法设置未定义或空引用的属性“maxLength”),直到我添加一条记录并显示 InsertItemTemplate。

        <html xmlns="http://www.w3.org/1999/xhtml">
        <head runat="server">
        <script type="text/javascript">
        function onPageLoad() {
            var txtAddNotes = document.getElementById("formViewNewItem_NotesTextBox");
            txtAddNotes.maxLength = 200;
         }
        </script>
        </head>
            <body onload="onPageLoad()">
       <asp:FormView ID="formViewNewItem" runat="server" DataKeyNames="ID" 
        DataSourceID="datasource1" OnDataBound="formViewNewItem_DataBound">
            <InsertItemTemplate>
            <asp:TextBox ID="NotesTextBox" runat="server" Text='<%# Bind("Notes") %>' TextMode="MultiLine" Rows="3" Width="350px" />
            </InsertItemTemplate>
       </asp:FormView>
    </body>
    </html>
4

1 回答 1

1

尝试更改 formview DefaultMode="Insert",然后您的脚本应该能够在页面加载时找到文本框。希望这可以帮助。

编辑
您可以尝试通过在页面加载时检查表单视图的当前模式来调用您的 js 函数:

    protected void Page_Load(object sender, EventArgs e)
    {
        if(formViewNewItem.CurrentMode == FormViewMode.Insert)
        {
             ClientScript.RegisterStartupScript(this.GetType(), "PageLoad", "onPageLoad();", true);
        }
    }
于 2013-05-26T00:27:29.190 回答