postback срабатывает даже после возврата false из OnClientClick

0

Мне нужно остановить Button1_Click fire после того, как функция JQuery вернет false. Это мой код...

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <script type="text/javascript" src="http://code.jquery.com/Javascript/jquery-1.4.2.min.js"></script>
    <script src="Scripts/a.js" type="text/javascript"></script>
    <script runat="server">

        protected void Button1_Click(object sender, EventArgs e)
        {

        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return x();"  OnClick="Button1_Click" />
            OnClick="Button1_Click" />
    </div>
    </form>
</body>
</html>

Файл js

function x() {

    alert('');

    return false;
}

это мой файл сгенерированный HTML файлом

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1">
    <script type="text/javascript" src="http://code.jquery.com/Javascript/jquery-1.4.2.min.js"></script>
    <script src="Scripts/a.js" type="text/javascript"></script>
    <title>

</title></head>
<body>
    <form method="post" action="Default.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTExNTM0OTE4ODNkZI8CSkltDp/afauc6DGl2D8JvNnVI1ffgzykF0L2alVM" />
</div>

<div class="aspNetHidden">

    <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEdAAOSROoMi8eHXeBzZ77oKwMrESCFkFW/RuhzY1oLb/NUVM34O/GfAV4V4n0wgFZHr3eJjGQabRwzK4TIMzE2tX2gN9468Yg/u6i/oj/9EvNo1w==" />
</div>
    <div>
        <input name="TextBox1" type="text" id="TextBox1" />
        <input type="submit" name="Button1" value="Button" onclick="return x();" id="Button1" />
    </div>
    </form>
</body>
</html>

Я также пробовал Похожие ссылки:

Почему не возвращает false из OnClientClick отменить обратную передачу

В этом случае обработчик для еще одного события клика был зарегистрирован через jquery.. Я думаю, что это не в моем случае

ASP.NET OnClientClick = "return false;" не работает

не должно быть обработчика события клика (зарегистрированного через jquery), который возвращает true.whats означает это? Означает ли это, что мне нужно удалить функцию onClick... я не хочу этого делать

Я также попробовал другой предложенный код:

<asp:Button ID="Button1" runat="server" Text="Button"  OnClientClick="if (!x()) return     
false;"  OnClick="Button1_Click" /> 

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="javascript:return        
x();"OnClick="Button1_Click" />  

они также не работают

Plese предлагает

  • 1
    Можете ли вы опубликовать сгенерированный источник HTML?
  • 1
    Пожалуйста, покажите код JS для функции X ??
Показать ещё 1 комментарий

2 ответа

3
Лучший ответ

Это сработало для меня...
.aspx-страница

<asp:Button id="btn" runat="server" Text="Button" onclientclick="if (!x()) { return false; }" onclick="btn_Click" />
<script type="text/javascript">
   function x() {
      return false;
   }
</script> 

Reference Help


Обновление из внешнего рабочего файла javascript
external.js

function x() {
    var result = confirm("Sure");
    if (result)
        return true;
    else
        return false;
}

.aspx-страница

<form id="form1" runat="server">
<asp:Button id="btn" runat="server" Text="Button" onclientclick="if (!x()) { return false; }" onclick="btn_Click" />
</form>
<script src="external.js" type="text/javascript"></script>

Надеюсь, поможет..!!

  • 0
    Да ... Это также работает для меня для встроенного скрипта .. Все еще думаю, почему не работает для внешнего файла js .. в любом случае спасибо
  • 0
    @ user3487944 см обновленный ответ .. Этот код работал для меня ...
1

Вы также можете поместить весь код в один файл. Присоединение обработчика непосредственно из jQuery

        jQuery(document).ready(function () {
            AttachDeleteButtonHandler();
        });

        function AttachDeleteButtonHandler() {
            var btnDelete = $("div[class='page']").find("table[id$='tblButtons']").find("input[id$='btnDelete']");
            btnDelete.click(
                function () {
                    return ConfirmDelete();
                }
            );
        }

        function ConfirmDelete() {
            var msg = $('div[id="hdnElements"]').find('span[onclick*="translatedMsgText"]').text();
            if (confirm(msg)) {
                return true;
            }
            else {
                return false;
            }
        }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню