0

我希望someDate的值可用于我的datepicker的minDate。目前我已将它保留为新的Date(),以便它能够正常工作,但取而代之,我需要一些日期值。在myFunction()中有逻辑someDate。我怎样才能做到这一点?如何让一个javascript函数的一个变量的值在任何其他函数中可用?

声明全局变量someDate不起作用。它只传递今天的日期值。在myFunction()someDate中所做的更改需要包含在Datepicker函数中。

以下是我的代码。

function myFunction() 
 
    { 
 
    var check = document.getElementById('check'); 
 
    var time = new Date().getHours(); 
 
    var currentday=new Date().getDate(); 
 
    alert(currentday); 
 
    var someDate = new Date(); 
 
    var day=0; 
 
    if(!check.checked && time>10) 
 
    { 
 
     alert(time); 
 
     alert(check.checked); 
 
     day=6-currentday-1; 
 
    
 
     var someDate = new Date(); 
 
    
 
     if(day>=3) 
 
     { 
 
     alert(day); 
 
     someDate.setDate(someDate.getDate() + 3); 
 
     alert(someDate); 
 
     } 
 
     else 
 
     { 
 
     alert(someDate); 
 
     someDate.setDate(someDate.getDate() + 5); 
 
     alert('yayy!!'); 
 
     } 
 
    } 
 
    else if(check.checked && time<10) 
 
    { 
 
    alert('Time <10 and checked'); 
 
    } 
 
    else if(!check.checked && time <10) 
 
    { 
 
    alert('Time <10 and UNchecked'); 
 
    } 
 
    
 
    else 
 
    { 
 
    alert(time); 
 
     alert(check.checked); 
 
     day=6-currentday-1; 
 
    
 
     
 
    
 
     if(day>1) 
 
     { 
 
     alert(day); 
 
     someDate.setDate(someDate.getDate() + 1); 
 
     alert(someDate); 
 
     } 
 
    else 
 
    { 
 
    alert(day); 
 
    someDate.setDate(someDate.getDate() + 3); 
 
     alert(someDate); 
 
    } 
 
    } 
 
    
 
    
 
    
 
    } 
 
    
 
    $(function() { 
 
    
 
    alert(window.someDate); 
 
       $("#datepicker-5").datepicker({ 
 
    
 
        beforeShowDay : function (date) 
 
        { 
 
         var dayOfWeek = date.getDay(); 
 
         // 0 : Sunday, 1 : Monday, ... 
 
         if (dayOfWeek == 0 || dayOfWeek == 6) return [false]; 
 
         else return [true]; 
 
        }, 
 
    
 
    minDate: someDate 
 
    
 
       }); 
 
      });
<link href="http://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css" rel="stylesheet"> 
 
<script src="http://code.jquery.com/jquery-1.10.2.js"></script> 
 
<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> 
 
    
 
    
 
    <p id="demo"></p>    
 
      
 
    
 
    <p>Enter Date: <input type="text" id="datepicker-5" ></p> 
 
    <input type="checkbox" id="check" onclick="myFunction()" >

+2

全局变量肯定有效。通过声明一个具有相同名称的局部变量,很可能你已经在函数中隐藏了全局函数。 – Teemu

+0

所有你提供的是如何在HTML代码中包含库。请提供一些js代码或者至少是您尝试的任何代码。除此之外,jqdatepicker有一个选项为mndate,你可以将其设置为静态的有价值的或通过变量来改变它,比如var date =你想要的日期 –

+0

嗨,Atilla,我已经提供了所有的代码,设置,以及如何在jQuery中我需要放置它。请向下滚动以查看更多代码,因为整个内容都包含在内。 –

回答

2

的全局命名空间是不需要解决这个问题。你可以把myFunction的文档准备好处理程序中是这样的:

$(function(){ 
    var someDate; 
    function myFunction(){ ... } 

    //add the change handler to the checkbox 
    $("#check").change(function(){ 
    myFunction(); 
    }); 
} 

注:这增加了该复选框更改处理使用jQuery,而不是在DOM让你输入标签可以仅仅是:

<input type="checkbox" id="check" > 
+0

我只是遵循这一点,它的工作,谢谢你! :) –

1

即使当您在全局范围内设置someDate时,Datepicker不知道使用新值。日期选择器refresh method但为了避免使用全球范围内它会好得多......

使用Datepicker option setter这样的:

function myFunction() { 
    var someDate; 

    // [Do the logic to decide value of someDate] 
    someDate = '+3d';  // three days from today, for example 

    // Set the minDate option on the datePicker: 
    $('#datepicker-5').datepicker('option', 'minDate', someDate); 
} 

还要注意:

  • 您应该从主datePicker初始化中删除minDate: someDate
  • 您可能需要检查jQueryUI文档中的minDate的有效值。
+0

感谢这个答案,但我已经找到了我的问题的答案。 –

相关问题