IE6 ограничить нажатие кнопки до одного раза - PullRequest
0 голосов
/ 10 марта 2012

* IE6 ограничить нажатие кнопки до одного раза. *
У меня есть кнопка, которую нужно щелкнуть один раз, и при первом щелчке мне нужно запустить несколько внутренних логик (операций), например, сохранить некоторые данные в БД, отправить электронную почту, сделать некоторые записи, и после успеха этих Операции мне нужно перенаправить на другую страницу. Но я использую

btnMakeFO.Visible = false ;

после нажатия кнопки, пользователь все еще может щелкнуть ее более двух раз.
Я также использовал:

btnMakeFO.Enabled = false ;

но это тоже не работает.

Я также использовал следующее при нажатии кнопки (btnMakeFO_Click) Обработчик событий:

btnMakeFO.Attributes.Add("onclick", "this.disabled=true;" + Page.ClientScript.GetPostBackEventReference(btnMakeFO, "").ToString());

Я много искал по этой проблеме, но не могу найти решение, адаптированное к моей проблеме.
ПРИМЕЧАНИЕ: я занимаюсь разработкой на Windows 7 x-64-битной машине и IE8, здесь кнопка нажимается максимум дважды. В FireFox8 он нажимается только один раз.
Но в производственной среде есть Windows 2003 Server, Internet Explorer 6, на этом сервере кнопка может быть нажата даже более двух раз, то есть кнопка btnMakeFO может нажиматься примерно от 10 до 15 раз подряд.
(Невозможно обновить Internet Explorer 6 на производственном сервере, так как немногие старые приложения не будут работать правильно в новых версиях Internet Explorer.)
Мне нужно решить эту проблему не раньше завтрашнего дня. Пожалуйста, помогите мне в этом отношении как можно скорее.

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Кстати, я использовал следующее (которое я нашел из Code Project ), оно работает очень хорошо, и я доволен этим решением.

<asp:Button OnClick="btnMakeFO_Click" OnClientClick="clickOnce(this, 'ABC...')">

<script type="text/javascript">
function clickOnce(btn, msg)
{
    // Test if we are doing a validation
    if (typeof(Page_ClientValidate) == 'function')
    {
        // if we are doing a validation, return if it's false
        if (Page_ClientValidate() == false)
        {
            return false;
        }
    }

    // Ensure that the button is not of type "submit"
    if (btn.getAttribute('type') == 'button')
    {
        // The msg attibute is absolutely optional
        // msg will be the text of the button while it's disabled
        if (!msg || (msg='undefined'))
        {
            msg = 'Saving.......';
        }
        btn.value = msg;
        // The magic :D
        btn.disabled = true;
    }
    return true;
}
</script>
0 голосов
/ 10 марта 2012

Подход javascript должен работать.

Вы вводите код со стороны сервера, что может быть сложно.Вы по-прежнему сможете видеть результаты при запуске приложения и просмотра исходного кода в браузере.Вы должны увидеть javascript в теге, например:

<input type="submit" value="Submit" onclick="this.disabled=true" />

Для ASP.Net вы также можете попробовать событие OnClientClick, которое можно добавить непосредственно в HTML, вместо того, чтобы вставлять егоКод вашей страницы отстает.

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