отключить и включить кнопку в jquery после события сервера - PullRequest
1 голос
/ 31 октября 2009

мне нужно отключить кнопку во время щелчка и нужно включить после того, как событие на моем сервере будет сделано сейчас мой код выглядит так

<script src="../Scripts/jquery-1.3.2.js" type="text/javascript"></script>   
<script  type ="text/javascript" >


$(document).ready(function(){
    $('.saveButton').bind("click", function(e) {
        $(this).attr("disabled", "true");
        return true; //causes the client side script to run.
    });
});
</script>
//this  works  finr  for disableing the   button
//how  to enable  the  button  from disabled  to enable  after my server  side  event as  executed

<asp:Button ID="Button1" runat="server"  CssClass="saveButton"  Text="Button" 
        onclick="Button1_Click" />
<asp:Button ID="Button2" runat="server"  CssClass="saveButton"  Text="Button" 
            onclick="Button2_Click" /> 

//Server   side  events
protected void Button1_Click(object sender, EventArgs e)
{
    try
    {
    }
    catch()
    {
    }
    finally
    {
        //once  my    control  reaches  here  i need   to enable  my save  from disabled to enabled stae 
        // can we  do this in jQuery
    }
}

ищет этот код в прошедших 2 днях любое решение по этому вопросу было бы здорово, спасибо спасибо

Ответы [ 3 ]

3 голосов
/ 31 октября 2009

Вы можете использовать метод RegisterClientScriptBlock для вашего события Button1_Click, чтобы добавить клиентские сценарии со стороны сервера:

var enableButton = "$('.saveButton').removeAttr('disabled');";
Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "EnableButton",
                                            enableButton, true); 
0 голосов
/ 07 августа 2014

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

Клиент

<asp:Button runat="server" ID="submitButton" ValidationGroup="DynamicForm" OnClientClick="disableButton(this);" />
<script>
    function disableButton(sender) { // Disable to prevent duplicate submission. Enabled in code behind
        if (Page_ClientValidate("DynamicForm")) {
            setTimeout(function () { $('#<%= submitButton.ClientID%>').attr("disabled", "true"); }, 0); // Asynchronously disable, otherwise disabled button won't submit first time
        }
     }
</script>

Сервер

Private Sub submitbutton_Click(sender As Object, e As EventArgs) Handles submitButton.Click
    ...
    Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "EnableButton", "$('#" + submitButton.ClientID + "').removeAttr('disabled');", True)
End Sub
0 голосов
/ 31 октября 2009

Я думаю, что основной проблемой здесь является ваше понимание жизненного цикла страницы, вы можете прочитать об этом здесь http://msdn.microsoft.com/en-us/library/ms178472.aspx.

Похоже, вам не обязательно публиковать страницу обратно. Подумайте об обновлении сервера с помощью jQuery ajax, и в обратном вызове снова включите кнопку.

В качестве альтернативы, кнопка снова включится через 5 секунд (после обратной передачи (надеюсь!))

$(document).ready(function()
    { $('.saveButton').bind("click", function(e) {
                        $(this).attr("disabled", "true"); 
                       setTimeout(function(){$(this).removeAttr("disabled");}, 5000);
                        return true; 
                        }); 
    });

Или, в конце события нажатия кнопки, напишите в буквальный элемент управления что-то вроде этого: "$ (Документ) .ready (функция () {$ ( 'jQueryButtonSelector') removeAttr ( 'отключено');.});"

Или сделать то же самое, используя response.write ()

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