繁体   English   中英

无法从onclick调用Javascript函数

[英]Javascript function not being called from onclick

这使我拔头发。 网站上的按钮具有onclick=method() ,并且未调用该方法。 该方法应该获取所有复选框,检查其选中状态,并用true / false填充chk[]数组。 然后, WebMethod将该数组分成三个较小的数组,并对组合进行检查。 据我所知,该按钮从不调用该方法开头。

aspx页面:

<fieldset id="Fieldset">
     <button onclick="SendForm();">Send</button>
     &nbsp;
     <button onclick="CancelForm();">Cancel</button>
</fieldset>
</form>
<asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" EnablePartialRendering="true" runat="server" />

<script type="text/javascript">
    function SendForm() {
        var email = $get("txtEmail").value;
        var elLength = form1.elements.length;
        var chk = new [42];
        for (i = 0; i < elLength; i++) {
            var count = 0;
            var type = form1.elements[i].type;
            if (type == "checkbox") {
                if (form1.elements[i].checked) {
                    chk[count] = true;
                }
                else {
                    chk[count] = false;
                }
                count++;
            }
            else {
            }
        }
        PageMethods.SendForm(email, chk, OnSucceeded, OnFailed);
    }
</script>

它正在调用codebehind方法:

[WebMethod]
public static void SendForm(string email, bool[] chk)
{
    bool[] desc = new bool[14];
    bool[] loc = new bool[14];
    bool[] other = new bool[14];
    for (int i = 0; i < 14; i++)
    {
        int count = i * 3;
        desc[i] = chk[count];
        loc[i] = chk[count + 1];
        other[i] = chk[count + 2];

    }
    if (string.IsNullOrEmpty(email))
    {
        throw new Exception("You must supply an email address.");
    }
    else
    {
        if (IsValidEmailAddress(email))
        {
            for (int i = 0; i < 14; i++)
            {
                if (desc[i])
                {
                    if ((loc[i]) && (other[i]))
                    {
                        throw new Exception("Invalid, two parameters selected");
                    }
                    else if (loc[i])
                    {
                        // do stuff
                    }
                    else if (other[i])
                    {
                       // do stuff
                    }
                    else
                    {
                        throw new Exception("Invalid, every exemption must have at least one reason selected");
                    }
                }
                else
                {
                    throw new Exception("No exemptions have been selected");
                }
            }
        }
        else
        {
            throw new Exception("You must supply a valid email address.");
        }
    }
}

编辑!:使用以下脚本而不是先前的脚本运行页面就像一个超级按钮。 不知道为什么以前没有奏效。

<script type="text/javascript">
    function SendForm() {
        var email = $get("txtEmail").value;
        var elLength = form1.elements.length;
        for (i=0;i< elLength;i++) {
            var type = form1.elements[i].type;
            if (type == "checkbox" && form1.elements[i].checked) {
                alert("true!");
            }
            else {
                alert("false!");
            }
        }
        PageMethods.SendForm(email, chk, OnSucceeded, OnFailed);
    }
</script>

而不是像这样调用函数

 <button onclick="SendForm();">Send</button>

尝试这样称呼它

<button onclick="javascript:return SendForm();">Send</button>

我为您提供了一些建议

1)var elLength = form1.elements.length; //尝试使用此-> document.getElementByID(“ form1”); 有时它与不同的网络浏览器不兼容

2)为什么不使用jquery?像下面这样吗? 如何使用jQuery调用ASP.NET Web服务?

使用以下脚本而不是先前的脚本运行页面的过程就像一个超级按钮。 不知道为什么以前没有奏效。

<script type="text/javascript">
    function SendForm() {
        var email = $get("txtEmail").value;
        var elLength = form1.elements.length;
        for (i=0;i< elLength;i++) {
            var type = form1.elements[i].type;
            if (type == "checkbox" && form1.elements[i].checked) {
                alert("true!");
            }
            else {
                alert("false!");
            }
        }
        PageMethods.SendForm(email, chk, OnSucceeded, OnFailed);
    }
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM