1

我在compute函数中有一些计算。

function compute() {
  var c = $('select#time_from_hour').val();
  var d = $('select#time_from_minute').val();
  var e = $('select#time_to_hour').val();
  var f = $('select#time_to_minute').val();
  var g = $('input#date_from').val();
  var h = $('input#date_to').val();
  var hour1 = g + ' ' + c + ':' + d;
  var hour2 = h + ' ' + e + ':' + f;

  hour1 = hour1.split("/");
  var hour1 = hour1[1] + "," + hour1[0] + "," + hour1[2];
  var timestamp = (new Date(hour1).getTime() / 1000) + 7200;
  $('#total_hour1').val(timestamp);

  hour2 = hour2.split("/");
  var hour2 = hour2[1] + "," + hour2[0] + "," + hour2[2];
  var timestamp = (new Date(hour2).getTime() / 1000) + 7200;
  $('#total_hour2').val(timestamp);

  var x = -$('input#total_hour1').val();
  var y = -$('input#total_hour2').val();
  var total_time = x - y;
  result = total_time / 86400;
  new_number = Math.ceil(result);

  if (isNaN(new_number)) {
    var new_number = 0;
  }
  $('#finish_day').val(new_number);

  if (parseInt($("#finish_day").val()) < 4) {
    $('#get_car, #return_car').not(this).children('#return_car option[value=' + this.value + ']').attr('selected', true).siblings().attr('disabled', true);
    $('#three_day').show(2000);
  } else {
    $('#get_car > option, #return_car > option').prop('disabled', false);
    $('#three_day').hide(2000, function() {
      $(this).remove();
    });
  }
}

$('select#time_from_hour').change(compute);
$('select#time_from_minute').change(compute);
$('select#time_to_hour').change(compute);
$('select#time_to_minute').change(compute);
$('select#return_car').change(compute);
$('select#get_car').change(compute);
$('input#finish_day').change(compute);

if当输入字段中的数据发生更改时,我尝试强制脚本动态重新计算函数#finish_day

if (parseInt($("#finish_day").val()) < 4) {
  $('#get_car, #return_car').not(this).children('#return_car option[value=' + this.value + ']').attr('selected', true).siblings().attr('disabled', true);
  $('#three_day').show(2000);
} else {
  $('#get_car > option, #return_car > option').prop('disabled', false);
  $('#three_day').hide(2000, function() {
    $(this).remove();
  });
}

它仅在我更改数据时才更改#get_car

工作示例:http: //jsfiddle.net/amarcinkowski/W7NHK/25/


问题如下:

我有一个预订表格,我在其中使用日期选择器,其中有两个日期框:开始和结束,以及两个带有可用城市列表的选择表单字段。根据所选日期,脚本计算天数。

如果天数少于 4,则在所选城市列表之一(第二个 - City2)上更改活动城市的可用性并自动选择在第一个列表(City1)中选择的城市。因此,如果我们在第一个列表城市中选择 - 例如卡托维兹,并且第二个列表脚本中的天数小于 4,则会自动标记卡托维兹城市,其他城市将处于非活动状态(禁用)。

当天数大于 4 天时,问题就开始了。这两个列表都是完全活跃的,您可以选择任何城市,没有任何限制。如果您选择不同的城市然后更改日期,并且天数下降到 3(例如),整个脚本应重新计算值并在第二个窗口中设置,即在第一个窗口中选择的城市(City1 = City2)。不幸的是,这不会发生。此外,在第二个列表中,您可以选择任何城市——所有城市都处于活动状态。仅当您从第一个列表中选择城市时,整个脚本才会重新计算。

4

0 回答 0