2016-12-14 111 views
0

我有以下代碼:JavaScript變量不更新

function showDatePicker(){ 
     var isEnabled=#{bean.isEnabled()}; 
     if (isEnabled){ 
      jQueryForDatepicker(".calendar").datepicker('enable'); 
      jQueryForDatepicker(".calendar").datepicker({ 
        changeMonth: true, 
        changeYear: true, 
        showOn: "button", 
        dateFormat:'yy-mm-dd', 
        buttonImage: "../resources/calendar.gif",  
        buttonImageOnly: true,  
        buttonText: "Select date", 
        beforeShow: function (input, inst) { 
         var rect = input.getBoundingClientRect(); 
         setTimeout(function() { 
          inst.dpDiv.css({ marginTop: -input.offsetHeight + '10' , marginLeft: input.offsetWidth + '10' }); 
         }, 0); 
        } 
      }); 
     } else { 
      jQueryForDatepicker(".calendar").datepicker('disable'); 
     } 
    }  

的功能是從一個Ajax事件調用,就是綁在下拉列表中。該下拉列表包含「啓用」,「禁用」值,並設置託管bean中的屬性。我的問題是,在javascript函數中,var isEnabled僅在加載頁面時設置。最初設置爲false,之後,如果我在下拉菜單中更改該值,那麼即使我的bean發回正確的值,javascript中的變量也不會更新。因此,如果它加載了錯誤的值,即使它應該更新爲true,反之亦然,它仍然保持這種狀態。

回答

0

我覺得你這樣做完全錯了。該代碼僅在加載頁面時觸發。如果您不刷新頁面或在dom中再次添加該腳本,則無法在客戶端上使用它。你應該去一個完全不同的解決方案。

你應該做的是添加js回調函數。

+0

每次下拉改變時都會觸發函數,這裏有一個ajax調用,唯一的問題是變量保持不變在原來的方式是閱讀。沒有得到更新.. – att1la

+0

那是因爲你是從後端或服務器聲明它。 從前端聲明它:) – knaos

0

isEnabled變量綁定您的bean,但此腳本不會再次運行。在更改bean值後,再次嘗試調用函數showDatePicker()。 我認爲你應該創建一個函數原型爲showDatePicker(isEnabled){...}