Javascript变量不会更新

时间:2016-12-14 09:14:49

标签: javascript jsf datepicker

我有以下代码:

    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事件调用的,该事件与下拉列表相关联。下拉列表包含“enable”,“disable”值,并在托管bean中设置属性。我的问题是,在javascript函数中,var isEnabled仅在加载页面时设置。最初设置为false,之后,如果我在下拉列表中更改值,则javascript中的变量不会更新,即使我的bean发回正确的值。因此,如果它以false值加载,即使它应该更新为true,它也会保持这种状态,反之亦然。

2 个答案:

答案 0 :(得分:0)

我认为你完全错了。仅在加载页面时才会触发此代码。如果您没有刷新页面或在dom中再次添加该脚本,则无法在客户端上使用它。你应该寻求一个完全不同的解决方案。

你应该做的是为函数添加js回调。

答案 1 :(得分:0)

isEnabled变量绑定了您的bean,但此脚本不再运行。在更改bean值之后再次尝试调用函数showDatePicker()。 我认为您应该使用原型创建一个函数showDatePicker(isEnabled){...}