У меня есть выпадающий список с двумя значениями (на данный момент ..) с другими элементами в форме.Что я хотел бы сделать, так это включить четыре компонента, если пользователь выбирает первое значение, и отключить их в противном случае.
Есть главная страница, и пользователь перемещается по другим страницам, открывая и закрывая вкладки, динамически загружаемые с помощью вызовов ajax., которые удаляют текущую страницу и загружают новую страницу в определенный div.
На тех страницах, загруженных с помощью Ajax, мне нужно поместить javascripts, которые будут использоваться на этих страницах, поэтому в этом случае javascript, который позволяет/ отключает нужные компоненты, но я не могу вызвать его, потому что получаю « Uncaught ReferenceError: soggettiNaturaChangeEvent не определено », где soggettiNaturaChangeEvent - это имя функции.
Вот где я ее называю, на странице newEditSoggetti.jsp:
<form:select id="soggetti_soggettiNatura" path="soggettiNatura" cssStyle="width:300px;" onChange="javascript:soggettiNaturaChangeEvent();">
...
...
...
На этой странице я также поместил функцию javascript:
<script id="function1" type="text/javascript">
alert("soggettiNaturaChangeEvent");
function soggettiNaturaChangeEvent()
{
alert("function soggettiNaturaChangeEvent");
var natura = document.getElementById('soggetti_soggettiNatura');
var datanascita = document.getElementById('soggetti_soggettiDataNascita');
var luogonascita = document.getElementById('soggetti_soggettiLuogoNascita');
var sesso1 = document.getElementById('soggettiSessoID1');
var sesso2 = document.getElementById('soggettiSessoID2');
if(natura.value == "Persona fisica")
{
datanascita.disabled=false;
luogonascita.disabled=false;
sesso1.disabled=false;
sesso2.disabled=false;
}
else
{
datanascita.disabled=true;
luogonascita.disabled=true;
sesso1.disabled=true;
sesso2.disabled=true;
}
}
</script>
Вот моя функция обновления вкладки, которая вызывает initScript, указанный в параметре:
//reset stuff, reorder tabs, etc...
$.ajax(action,
{
success : function(result)
{
//finds the div where to put new content
var doc = document.getElementById(newid);
doc.innerHTML = doc.innerHTML + result;
//finds the initScript "scriptId" and runs it (THIS WORKS)
scripts = $('#' + scriptId);
eval(scripts.html());
//here I try to find all the scripts tag that begin with "function" and eval them
var jScripts = $("[id^=function]");
for(var i = 0; i < jScripts.size(); i++)
{
eval(jScripts.html());
jScripts = jScripts.next();
}
}
});
Страница печатает первое предупреждение, когда (я думаю) она добавляетфункция для DOM, но когда я нажимаю на компонент, который должен вызвать функцию, я получаю ошибку.Я хотел бы, чтобы эта функция выполнялась, когда я нажимаю на компонент soggettiNatura, а не когда ajax заканчивает загрузку моей страницы.Спасибо всем, кто попытается мне помочь, и всем, кто разместил полезный контент, который я читал в прошлом.Продолжайте с большой работой.Андреа PS: извините за плохой отступ, я немного тороплюсь: P
Редактировать: немного добавить: если я пытаюсь загрузить страницу нормально (не с Ajax), javascript работает ..У меня есть функция на главной странице, которая показывает мне фактический HTML-код после различных javascripts и ajax-модификаций (это чисто для отладки), и функция javascript, которую я пытаюсь вызвать, есть в дом ...новичок в этом мире ..