发布
社区首页 >问答首页 >基于另一个字段的自动更改字段javascript

基于另一个字段的自动更改字段javascript
EN

Stack Overflow用户
提问于 2016-09-25 04:41:47
回答 2查看 690关注 0票数 1

我正在使用这个数据采集器和这个选时器。我想要开发JS代码,它将确定用户是否选择了数据报警器上的当前日期,如果是这样的话,这将触发一个时间选择器的函数,该函数将在实际时间之前禁用所有时间。我是JavaScript的新手,所以我只得到了这么多。

HTML:

代码语言:javascript
代码运行次数:0
复制
<input id="datemax" placeholder="Enter the date of incident" type="text"/>

<input id="timemax" placeholder="Enter the time of incident" type="text"/>

函数可禁用当前时间之前的时间,但无论选择的日期如何,该功能都将保持不变:

代码语言:javascript
代码运行次数:0
复制
function getCurrentTime(date) {
    var hours = date.getHours();
    var minutes = date.getMinutes();
    var ampm = hours >= 12 ? 'pm' : 'am';

  hours = hours % 12;
  hours = hours ? hours : 12; 
  minutes = minutes < 10 ? '0'+minutes : minutes;

  return hours + ':' + minutes + ' ' + ampm;
}
var timesAvailable = {
        'timeFormat': 'h:i A',
        'disableTimeRanges': [[getCurrentTime(new Date()), '12am']]
    };
$('#timemax').timepicker(timesAvailable);

我想知道在我的表单中实现上述JS功能需要什么。我假设需要开发第二个函数,并且需要使用var datemax = document.getElementById("datemax").value;从date字段调用值。

我在这里开发了一些不完整的伪码代码:

代码语言:javascript
代码运行次数:0
复制
   function datetimeSelect{

    var currentDate = new Date();
    var day = currentDate.getDate();
    var month = currentDate.getMonth();
    var year = currentDate.getFullYear();

    var datemax = document.getElementById("datemax").value;

    if (datemax === currentDate){ 

    //activate 

    'disableTimeRanges': [[getCurrentTime(new Date()), '12am']] //Can't select any time before now, greyed out
    return false;
    }
    else //datemax does not equal to currentDate
    {
    $('#timeMax').timepicker();//Standard Datepicker and any time can be selected
    return true;
    {

因此,例如,如果选择的日期不是今天,时间选择器将返回到它的默认功能,没有任何灰色的时间。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-25 09:53:27

您对这个问题的奉献是值得注意的,但是在目前的情况下很难找到任何解决方案--我已经提出了一个经过一些解释后的解决方案,试着告诉它是否适合您的需要。

如果你有一个回调的数据报警器插件,会在用户选择日期后调用,比如。

代码语言:javascript
代码运行次数:0
复制
datepickr('#datemax',{onSelect:'someFn'});

然后

代码语言:javascript
代码运行次数:0
复制
function someFn()
{
    alert('somethings changed');
    var timesAvailable = {
    'timeFormat': 'h:i A',
    'disableTimeRanges': [['12am', getCurrentTime(new Date())]]
    };

    $('#timemax').timepicker(timesAvailable);

}

这本来很容易,但由于情况并非如此,您可能需要寻找其他alternatives.Note,如果您喜欢这样做,并选择一些日期

代码语言:javascript
代码运行次数:0
复制
$("#userInput").change(function(){ 
     //same above code
});

这不起作用,因为事件在您通过代码更改值时不会触发,这正是这个插件所做的。当您单击textbox (其中的插件是一个处理程序)时,它将显示它的动态html创建(日历),您再次单击它的某个位置,在它上也有一个事件处理程序,它将根据上面代码中click (date).So的位置填充具有适当值的textbox,例如分配一个change事件处理程序,并期望$("#userInput").val("11");调用该处理程序;这是不起作用的警报永远不会弹出。

因此,我能找到的唯一替代方法并不是一个很好的实践,但在这里可以帮助您,您可以在动态生成的元素上分配处理程序,这些元素用于呈现日历,在这种情况下,它们使用<table>,这样您就可以为<td>元素分配一个委托的click处理程序,并在其中编写时间选择器代码。

https://jsfiddle.net/xgyh58an/

票数 0
EN

Stack Overflow用户

发布于 2016-09-25 05:56:09

如果我正确地理解了你,你只需要使用jquery变化函数

代码语言:javascript
代码运行次数:0
复制
$("elementId").change(function() {
   if(selectedDate == currentDate){
     //disable times previous to the actual time
   }
   else{
   }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39683458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档