#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 () {
, если я понимаю, в этом ваша проблема.