Отпишитесь, вызвав сброс в слайдере, как остановить сброс (сайт asp.net) - PullRequest
2 голосов
/ 15 декабря 2011

У меня есть ползунок, и при загрузке страницы я устанавливаю значение по умолчанию для ползунка (25,75).Каждый раз, когда после изменения значения ползунка появляется сообщение на панели обновлений, оно сбрасывает значение до 25,75, как я могу остановить его от сброса.выпадающее значение в ползунке сбрасывается.как это остановить

 <script type="text/javascript">
        function pageLoad(sender, args) {
            $('.datePicker').datetimepicker({ dateFormat: 'dd/mm/yy' });
            $(function () {
                $("#slider-range").slider({
                    range: true,
                    min: 0,
                    max: 100,
                    values: [25, 75],
                    slide: function (event, ui) {
                        $("#minval").val("" + ui.values[0] + " - " + ui.values[1]);
                    }
                });
                $("#minval").val("" + $("#slider-range").slider("values", 0) +
            " - " + $("#slider-range").slider("values", 1));
            });
        }
    </script>

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Если вы хотите сохранить состояние ползунка между постбэками, вам нужно либо получить значения ползунка в некоторые входные данные, которые фактически возвращаются на сервер, либо переместить ползунок за пределы панели обновлений и переместить инициализациюкод из pageLoad ().Для первого подхода:

Разметка:

<asp:UpdatePanel runat="server">
    <ContentTemplate>
        <asp:HiddenField ID="hfSliderHandle1" Value="25" runat="server" />
        <asp:HiddenField ID="hfSliderHandle2" Value="75" runat="server" />
    </ContentTemplate>
</asp:UpdatePanel>

Сценарий:

var $h1 = $('input[id$="hfSliderHandle1"]'),
    $h2 = $('input[id$="hfSliderHandle2"]');

$("#slider-range").slider({
    range: true,
    min: 0,
    max: 100,
    values: [parseInt($h1.val()), parseInt($h2.val())],
    slide: function (event, ui) {
        $("#minval").val(ui.values[0] + " - " + ui.values[1]);
        $h1.val(ui.values[0]);
        $h2.val(ui.values[1]);
    }
});

Возможно, выЯ могу проанализировать все, что есть в #minval, чтобы сделать то же самое, но я ничего не знаю о природе этого элемента, поэтому я просто предоставляю решение как есть для вас, чтобы адаптировать концепцию по мере необходимости.Если, например, это было текстовое поле на панели обновлений, которое вы предварительно заполнили значением «25 - 75»:

var $minVal = $("#minval");
var h1 = parseInt(/^\d+/.exec($minVal.val())[0]),
    h2 = parseInt(/\d+$/.exec($minVal.val())[0]);

$("#slider-range").slider({
    range: true,
    min: 0,
    max: 100,
    values: [h1, h2],
    slide: function (event, ui) {
        $minVal.val(ui.values[0] + " - " + ui.values[1]);
    }
});
1 голос
/ 15 декабря 2011

Убедитесь, что все ваши скрипты находятся за пределами UpdatePanel, и поместите то, что вы хотите, вызывали один раз в .ready(), и то, что вы хотите, чтобы вызывалось, на каждую асинхронную обратную передачу в pageLoad():

   $(document).ready(function() {
       $(function () {
            $("#slider-range").slider({
                range: true,
                min: 0,
                max: 100,
                values: [25, 75],
                slide: function (event, ui) {
                    $("#minval").val("" + ui.values[0] + " - " + ui.values[1]);
                }
            });
            $("#minval").val("" + $("#slider-range").slider("values", 0) +
        " - " + $("#slider-range").slider("values", 1));
        });
   });

   function pageLoad(sender, args) {
        $('.datePicker').datetimepicker({ dateFormat: 'dd/mm/yy' });

    }

$ (document) .ready () и pageLoad () не совпадают!

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