Функция изменения в jQuery запускается дважды при обратной передаче - PullRequest
1 голос
/ 18 декабря 2011

У меня проблема с функцией изменения в jQuery 1.7.1 и обратной передачей.По сути, мне нужно переключить атрибут отключенных кнопок в зависимости от того, выбран ли элемент в раскрывающемся списке.В коде у меня есть:

<input type="button" id="btnRed" value="show Red" disabled="disabled" class="spButton" />
<input type="button" id="btnBlue" value="show Blue"   disabled="disabled" class="spButton"/>
<input type="button" id="btnYellow" value="show Yellow" disabled="disabled"  class="spButton" />

У меня выпадающий asp с autopostback установлен на true

<asp:DropDownList ID="selAccount" runat="server"  
    onselectedindexchanged="selAccount_SelectedIndexChanged" AutoPostBack="true">
    <asp:ListItem Value="-1">select me</asp:ListItem>
    <asp:ListItem Value="234">234</asp:ListItem>
</asp:DropDownList>

и jQuery:

 $(document).ready(function () {
    $("#selAccount").change(function () {
        var selValue = $(this).val();

        if (selValue == '-1') {
            $(".spButton").attr("disabled", "disabled");
        }
        else {
            $(".spButton").removeAttr("disabled");
        }
    });
 });

неизменно, когдапроисходит обратная передача, кнопки остаются отключенными.Я проверил с включенной кнопкой, и она стреляет дважды.я пробовал разные подходы (bin, unbind) безрезультатно.Я обошел эту проблему с помощью скрытой переменной, установленной в SelectedIndexChanged в коде позади, и запросил значение скрытой переменной в jQuery.Есть ли проблема с методом изменения?Есть лучший способ сделать это?Любое понимание будет оценено.спасибо,

1 Ответ

2 голосов
/ 18 декабря 2011

Если вы выполняете обратную передачу каждый раз, когда значение изменяется, то страница перезагружается и изменения, сделанные jQuery, теряются.

Либо остановите автоматическую обратную передачу ( установите его на false), либо при необходимости измените код с события change на событие ready.

$(function(){
    var selValue = $("#selAccount").val();

    if (selValue == '-1') {
        $(".spButton").attr("disabled", "disabled");
    }
    else {
        $(".spButton").removeAttr("disabled");
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...