代码之家  ›  专栏  ›  技术社区  ›  tcables

ASP.NET JavaScript集成

  •  0
  • tcables  · 技术社区  · 15 年前

    我正在尝试在ASP.NET中使用以下脚本:

    <script language="javascript" type="text/javascript">
        function checktext() {
            var txt = document.getElementById('tbComments');
    
            if (txt.Text.Length > 0) {
                alert('Thank you for submitting feedback.');
    
                return true;
            }
            else {
                alert('Sorry, you must enter text before submitting.')
    
                return false;
            }
        }
    </script>
    
    
        <asp:Button ID="btnSave" runat="server" Text="Submit" onclick="btnSave_Click" OnClientClick="checktext();" />
    

    我试过在onclick事件中使用它。剧本根本不起作用。

    有什么想法吗?

    4 回复  |  直到 15 年前
        1
  •  0
  •   Jhonny D. Cano -Leftware-    15 年前

    可以使用clientid属性在客户端获取控件的名称。不过,我建议你试试jquery

    var txt = document.getElementById('<%=tbComments.ClientID%>');
    

    此外,onclientclick必须接收一个true或false值,以便“知道”是否要将请求发送到服务器;因此您必须使用类似于 OnClientClick="return checktext();"

        2
  •  0
  •   Darin Dimitrov    15 年前

    试着这样称呼它:

    <asp:Button 
        ID="btnSave" 
        runat="server" 
        Text="Submit" 
        onclick="btnSave_Click" 
        OnClientClick="return checktext();" />
    

    此外,在Web窗体应用程序中,该行看起来可疑:

    document.getElementById('tbComments');
    

    确保生成的控件ID没有前缀其他内容。

        3
  •  0
  •   Sunny    15 年前

    替换:

    <asp:Button ID="btnSave" runat="server" Text="Submit" onclick="btnSave_Click" OnClientClick="checktext();" />
    

    用:

    <asp:Button ID="btnSave" runat="server" Text="Submit" onclick="btnSave_Click" OnClientClick="return checktext();" />
    

    替换:

    var txt = document.getElementById('tbComments');
    

    用:

    var txt = document.getElementById('<%= tbComments.ClientId %>');
    

    Hth.

        4
  •  0
  •   lincolnk    15 年前

    其他人都提到过clientclick,所以我就不说了。

    假设tbcomments是某种文本框,那么这一行

    if (txt.Text.Length > 0) {
    

    将失败,因为文本不是HTML输入或文本区域的属性,这就是ASP.NET文本框的呈现方式。你想要的是

    if (txt.value.length > 0) {
    

    另外,您不使用常规的ASP.NET RequiredFieldValidator控件有什么原因吗?你做的工作比你需要的多。如果必须有警报框,则可以使用customvalidator控件调用函数(必须对其进行调整以适应模型)。

    推荐文章