2013-05-31 3 views
1

У меня есть два взаимно исключающих ИЛИ cfselect, при этом первая опция пуста (ничего не выбрано). Если в cfselect выбран непустой параметр, в функции javascript выбирается пустая опция (первая опция) в другом cfselect. Тем не менее, функция javascript не вызывается (проверяется с помощью alert()) при щелчке по опции.cfselect onClick не вызывая функцию javascript

function resetBusiness() { 
    alert("resetBusiness() - Entering ...................""); 

    var aForm = document.forms[0]; 
    var optDiv = aForm.getElementById("sDiv").value; 

    alert("optDiv: |" + optDiv + "|"); 

    if (optDiv != "") { 
    aForm.getElementById('sBus').selectedIndex = 0; 
    aForm.submit(); 
    } 
} 


function resetDivision() { 
    alert("resetDivision() - Entering ...................""); 

    var aForm = document.forms[0]; 
    var optBus = aForm.getElementById("sBus").value; 

    alert("optBus: |" + optBus + "|"); 

    if (optBus != "") { 
    aForm.getElementById('sDiv').selectedIndex = 0; 
    aForm.submit(); 
    } 
} 

...

<cfselect id="sBus" name="sBus" query="qryBus" display="BU" value="BU" 
      selected="#HDF(attributes.sBus)#" multiple="yes" size="6" 
      queryPosition="below" 
      onClick="javascript:resetDivision(this)"> 
    <option></option> 
</cfselect> 
+0

Ваши кавычки отключены. – jbabey

+0

Плюс вы передаете аргумент функции, которая не принимает его. –

ответ

0

@jbabey правильно, у вас слишком много цитат в вашем предупреждении. Попробуйте изменить это:

alert("Entering resetDivision function..."); 

Кроме того, было бы лучше, чтобы дать вашей форме идентификатор тоже вместо использования document.forms[0] в случае, если вы когда-либо изменить код и добавить еще одну форму выше этот (как окно поиска в начало страницы). Я никогда не видел form.getElementById() ...

function resetDivision() { 
    var optBus = document.getElementById("sBus").value; 

    if (optBus != "") { 
    document.getElementById('sDiv').selectedIndex = 0; 
    document.getElementById("form1").submit(); // substitute with actual form id 
    } 
} 

Ваш код также предполагает, что элементы существуют. Вы можете сделать свой код более надежным и только попытаться получить доступ к объекту объекта, если он был успешно извлечен:

var optBus = document.getElementById("sBus"); 
var optBusVal = ''; 
if (optBus && optBus != 'undefined') { // actually I think you only need the first check 
    optBusVal = optBus.value; 
} 
Смежные вопросы