Событие OnClick не запускается - PullRequest
1 голос
/ 02 октября 2009

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

Страница ASPX

<body>
<form id="form1" runat="server">
    <asp:TextBox ID="tb" runat="server"></asp:TextBox>
    <asp:Button ID="btnOk" runat="server" text="OK" Width="60px"  UseSubmitBehavior="true" OnClientClick="saveAmendments();" />
</form>

В page_load в коде позади я добавляю атрибут onchange в текстовое поле

if (!IsPostBack)
    {
        tb.Attributes.Add("onchange", "addSaveDetails('abc###123###456###test###abc###');");
    }
}

Который отображается следующим образом

<body>
    <form name="form1" method="post" action="TestJP.aspx" id="form1">
    <div>
        <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUi3er8ht8oaCZzy2..." />
    </div>

    <div>
       <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwKOoa..." />
    </div>

    <input name="tb" type="text" value="testtt" id="tb" onchange="addSaveDetails('abc###123###456###test###abc###');" />
    <input type="submit" name="btnOk" value="OK" onclick="saveAmendments();" id="btnOk" style="width:60px;" />
</form>

Так что, если я изменю значение в текстовом поле и щелкну где-нибудь еще на экране, функция AddSaveDetails срабатывает. Затем нажмите на кнопку и сработает saveAmendments. Однако, если вы измените текст, а затем сразу же нажмете кнопку (а не где-то еще на экране первым), и сработает только первая (onchange) функция. Событие onClick никогда не происходит. Вызываемый js не делает ничего, кроме предупреждения. Что может помешать событию всплыть до последнего звонка?

Ответы [ 2 ]

4 голосов
/ 02 октября 2009

Попробуйте вернуть true из ваших функций в дополнение к предупреждению. Я предполагаю, что распространение действия события остановлено, потому что вы возвращаете false (или ничего, что интерпретируется как false).

0 голосов
/ 02 октября 2009

бешенство. Спасибо тванфоссон. Это привело меня на правильный путь, но мне не нужно явно возвращать true

В моей функции js у меня был отладчик; заявление. Это все испортило, т. Е.

т.е. Закомментируем исправленные вещи отладчиком ..

function addSaveDetails(strDetails) {
debugger;
alert('func1');
//return true;

}

Что это за отладчик; что предотвращает 2-е событие! Argh. Оказывается, я действительно создал проблему, пытаясь решить несуществующую !!

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