asp форма запускается на сервере, не позволяет внутренней кнопке html onlick setinterval работать

0

Я пытаюсь заставить кнопку на стороне сервера сделать что-то на стороне клиента (id="formSrvBtn"), но по какой-то причине функция setInterval работает не так, как ожидалось (выражение для оценки не оценивается), я также попытался использовать кнопку клиента вместо кнопки сервера (id="formCltBtn"), которая также была бы допустимой опцией, но с тем же нежелательным результатом... Единственный способ заставить ее работать - это положить кнопку полностью за пределы серверный контекст (id="cltBtn"), который не является допустимым вариантом в нашем сценарии реальной жизни.

Heres - это html для небольшой aspx, подтверждающей все вышеперечисленное:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication1._Default" %>

<!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">
        function dumb_setInterval() {
            setInterval(function(){alert('dumb setInterval after 5000ms!');}, 5000);    
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <p><asp:ImageButton id="formSrvBtn"
            runat="server" 
            OnClientClick="dumb_setInterval();"
            AlternateText="This server img button setInterval does not work!"
        >           
        </asp:ImageButton></p>
        <p><button id="formCltBtn"
            onclick="dumb_setInterval();"
        >
            This client button setInterval does not work!
        </button></p>
    </form>
    <p><button id="cltBtn"
        onclick="dumb_setInterval();"
    >
        This client button setInterval works!
    </button></p>
</body>
</html>

Форма (id="form1") должна быть сервером runat в нашем сценарии реальной жизни, поэтому мне нужно получить кнопки (id="formSrvBtn" или id="formCltBtn"), щелкнув событие, которое правильно id="formCltBtn" setInterval.

Здесь решение rep (для visual studio 2005, извините...): https://github.com/RASMiranda/setIntervalRunAtServer

И вот прямая ссылка для скачивания решения: https://github.com/RASMiranda/setIntervalRunAtServer/archive/master.zip

Теги:

1 ответ

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

Вы должны убедиться, что поведение OnClientClick по умолчанию на вашем ImageButton не вызывается, так как это приведет к обратной передаче. Вы можете сделать это, вернув false из своего dumb_setInterval():

function dumb_setInterval() {
    setInterval(function(){alert('dumb setInterval after 5000ms!');}, 5000);    
    return false;
}

Затем добавив оператор return к вашему атрибуту:

<asp:ImageButton id="formSrvBtn"
            runat="server" 
            OnClientClick="return dumb_setInterval();"
  • 0
    @RGragam, конечно! Вернуться на OnClientClick! угадайте не просто setInterval, кто тупой ... ваше 2-е решение прекрасно работает: или просто верните false из вашего метода dumb_setInterval: / _ Не забудьте обновить ImageButton OnClientClick, если используете return false; Метод: _. Спасибо!
  • 1
    Я делал это точно так много раз, что потерял счет!
Показать ещё 2 комментария

Ещё вопросы

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