См. Мой сценарий ниже.
Мне нужно передать значение selectedLang на страницу. но он всегда показывает 0 вместо обновленного значения. я что-то пропустил? пожалуйста, советую мне.
если я добавлю BLOCK 2, внутри BLOCK 1 его работа. но проблема в том, что это не сработает, если я не нажму никого из переключателя.
<script>
var selectedLang = 0;
$(document).ready(function(){
$('.slang').click(function()
{
/*************BLOCk 1 ******************/
var selected = $("input[type='radio'][name='lang']:checked");
if (selected.length > 0)
{
selectedLang = selected.val();
}
alert(selectedLang);
/************** BLOCK 1***************/
});
/************** BLOCK 2***************/
var options = {
script:base_url+"?ajax&json=true&limit=6&songauto=true&lang="+selectedLang+"&",
varname:"input",
json:true,
shownoresults:false,
maxresults:6,
callback: function (obj) { document.getElementById('testid').value=obj.id; }
};
var as_json = new bsn.AutoSuggest('songsearch', options);
/*******************************/
});
</script>
При такой настройке оно всегда будет 0, поскольку объект объектов создается до выполнения обработчика клика. Вам нужно будет обновить объект options из обработчика щелчка после обновления переменной "selectedLang", примерно так:
selectedLang = selected.val();
options.script = base_url+"?ajax&json=true&limit=6&songauto=true&lang="+selectedLang+"&";
и тогда он должен работать.
Вы можете попробовать это
<script>
var selectedLang = 0;
var options;
$(document).ready(function() {
$('.slang').click(function() {
var selected = $("input[type='radio'][name='lang']:checked");
if (selected.length) {
selectedLang = selected.val();
options.script = base_url+"?ajax&json=true&limit=6&songauto=true&lang="+selectedLang+"&";
}
});
var options = {
script:base_url+"?ajax&json=true&limit=6&songauto=true&lang="+selectedLang+"&",
varname:"input",
json:true,
shownoresults:false,
maxresults:6,
callback: function (obj) { document.getElementById('testid').value=obj.id; }
};
var as_json = new bsn.AutoSuggest('songsearch', options);
});
</script>
Это может сработать. Возможно, вам придется вручную обновить as_json
. Хотя вы действительно должны подумать о реорганизации своего решения. В основном вы просто хотите убедиться, что каждая ссылка на selectedLang
обновляется, когда она есть.
options
иas_json
когда документ загружается, аselectedLang
равен 0, они никогда не будут обновляться при измененииselectedLang