Кнопка ASP.net onserverclick работает только тогда, когда onclick не определен - PullRequest
5 голосов
/ 28 января 2011
    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 () не определена, хотя форма все еще отправляется!

Ответы [ 5 ]

8 голосов
/ 29 января 2011

попытка без возврата: <button type="submit" runat="server" onserverclick="btnNext_Click" onclick="checkForm();" id="btnNext">Next &gt;</button>Или, если вы хотите, чтобы checkForm () управлял публикацией или нет - сделайте так:

onclick="if (!checkForm()) return;"
7 голосов
/ 28 января 2011

Причина, по которой вы видите это, заключается в том, что, когда у вас есть обе кнопки, он запускает ваш обработчик нажатий, после которого следует функция __ doPostBack , поэтому онклик будет выглядеть примерно так

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

Итак, как вы можете видеть, __doPostBack, который фактически устанавливает, какую серверную функцию вызывать, никогда не вызывается. Однако, поскольку кнопка имеет тип submit, форма все еще отправляется обратно на сервер.

0 голосов
/ 25 июля 2018

Можете ли вы попробовать с LinkButton:

<asp:LinkButton type="submit" runat="server" onserverclick="btnNext_Click" onclick="return checkForm();" id="btnNext">Next &gt;</asp:LinkButton>
0 голосов
/ 25 июля 2018

Front End

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

Back End

 protected void submit_ServerClick(object sender, EventArgs e)
 {
 }
0 голосов
/ 03 сентября 2015

Попробуйте:

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

У меня это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...