jQuery не выполняется при смене языка

#c# #jquery #asp.net

#c# #jquery #asp.net

Вопрос:

ОБНОВЛЕНИЕ: проблема в том, что js находится в UserControl.

У меня есть следующий скрипт

 <script type="text/javascript">
    var jSonUrl = '<%= ResolveUrl("~/Autocomplete/LocalityByPostalCode.ashx") %>';
    var txtPostalCode = '#<%= this.txtPostalCode.ClientID %>';
    var txtLocality = '#<%= this.txtLocality.ClientID %>';

    $(function () {

        var refresh = function () {

            var txtPostalCode = '#<%= this.txtPostalCode.ClientID %>';
            var txtLocality = '#<%= this.txtLocality.ClientID %>';

            //for table row
            onEachPageRefresh(txtPostalCode, txtLocality);

        }

        function onEachPageRefresh(paramPostalCode, paramLocality) {
            $(paramPostalCode).blur(function (ev) {
                var postalCode = $(this).val();
                if (postalCode.length != 4)
                    return;

                $.get(jSonUrl   '?'   postalCode, null, function (responseText, textStatus) {
                    var txtLoc = $(paramLocality).val('');
                    if (responseText.match(/|/)) {
                        txtLoc.hide();
                        var all = responseText.split('|');
                        var select = $('<select />');
                        for (var i in all) {
                            select.append('<option>'   all[i]   '</option>');
                        }
                        txtLoc.val(all[0]);
                        txtLoc.parent().append(select);
                        select.change(function () { $(paramLocality).val($(this).val()) });
                    } else {
                        txtLoc.parent().find('select').remove();
                        txtLoc.show().val(responseText);
                    }
                }, 'text');
            });
        }

        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_endRequest(function () {
            refresh();
        });

        refresh();
    });

</script>
  

Проблема, с которой я сталкиваюсь, заключается в следующем: если я использую английский, он работает. Если я переключусь на венгерский, это не сработает. Дело в том, что этот скрипт работает на других страницах веб-сайта. Событие не запускается. Технология является ASP.NET веб-формы.

Обновить:

ОК. Вот обновление:

Я жестко запрограммировал скрипт на странице, а не пользовательский элемент управления, подобный этому

  var jSonUrl = '<%= ResolveUrl("~/Autocomplete/LocalityByPostalCode.ashx") %>';
        var txtPostalCode = '#MainContent_ucMainBuilding_txtPostalCode';
        var txtLocality = '#MainContent_ucMainBuilding_txtLocality';
  

И это сработало. Итак, проблема в том, что js находится в UserControl.

Комментарии:

1. Что вы видите, когда запускаете его на венгерском — какие-либо ошибки или исключения? Что именно не работает?

2. нет, я не вижу никаких исключений, единственное, что происходит, когда я переключаюсь на венгерский или страница загружается с венгерским языком, это то, что она получает другие тексты из ресурсов. но это не должно мешать работе javascript.

3. Если я переключусь на английский, а затем обратно на венгерский, тогда это сработает.

Ответ №1:

Попробуйте

 var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(function(){
    refresh();
});
  

вместо

 var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function () {
    refresh();
});
  

Комментарии:

1. извините, не работает. Хотя, если я переключусь на английский, а затем обратно на венгерский, тогда это сработает.

2. Попробуйте добавить свой var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_endRequest(function () { refresh(); }); outside $(function () { , если я понимаю, в этом ваша проблема.