ASP.net按钮onserverclick仅在未定义onclick时有效

时间:2011-01-28 15:43:36

标签: c# asp.net jquery button onclick

    protected void btnNext_Click(object sender, EventArgs e)
    {
        btnNext.InnerHtml = "CLICK";
    }

    <button type="submit" runat="server" onserverclick="btnNext_Click" id="btnNext">Next &gt;</button>

这很好,但是当我添加一个onclick事件时:

<button type="submit" runat="server" onserverclick="btnNext_Click" onclick="return checkForm();" id="btnNext">Next &gt;</button>

头脑中:

<script type="text/javascript">

    function checkForm() {

        if (document.getElementById("<%=lstChooseSpec.ClientID %>").value) {
            return true;
        } else {
            $.jGrowl("<strong>Warning!</strong><br />Please select an item", { sticky: true });
            return false;
        }
    }
</script>

它提交表单,但不会将按钮文本更改为“CLICK”。虽然表单仍在提交,但只有在未定义onclick()时,文本才会更改为“CLICK”!

5 个答案:

答案 0 :(得分:8)

尝试没有'返回': <button type="submit" runat="server" onserverclick="btnNext_Click" onclick="checkForm();" id="btnNext">Next &gt;</button>
或者,如果您希望checkForm()控制是否发布 - 请执行以下操作:

onclick="if (!checkForm()) return;"

答案 1 :(得分:7)

您之所以看到这一点,是因为当您同时使用按钮时,它会运行您的点击处理程序,然后是__doPostBack function,因此onclick看起来像这样

onclick="return checkForm(); __doPostBack('btnNext','')

因为你可以看到__doPostBack,它实际上设置了要调用的服务器函数,从不被调用。但是,由于该按钮的类型为submit,表单仍会发送回服务器。

答案 2 :(得分:0)

试试这个:

onclick="javascript:if (!validaForm()) return false;"

它对我有用。

答案 3 :(得分:0)

前端

  <button  id="submit1" runat="server"  
              onclick="if(confirm('Sure?')) { } else{ return false} ;"                       onserverclick="submit_ServerClick"  >save</button>

后端

 protected void submit_ServerClick(object sender, EventArgs e)
 {
 }

答案 4 :(得分:0)

您可以尝试使用LinkButton

<asp:LinkButton type="submit" runat="server" onserverclick="btnNext_Click" onclick="return checkForm();" id="btnNext">Next &gt;</asp:LinkButton>