0

開始日と終了日の差を計算すると、終了日が開始日の「前」として入力される可能性があるため、「totaldays」に負の計算値を許可します。)「分」を使用して、開始日が「今日より前」にならないようにしました。)

また、計算が完了するまで「total_days」の結果 (計算結果) を非表示にすることは可能ですか?

私は自分でこれを完了しようとしましたが、javascript / jquery の知識が非常に限られています。私はどんな反応も大切にします。:-) ありがとうございました

<title>Conference Form</title>



<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jqueryui.js"></script>
<link href="style.css" rel="stylesheet" type="text/css"/>
<link href="css/jqueryui.css" rel="stylesheet" type="text/css" />

<body>

<div id="wrapper">
<div id="header"></div>

<table width="705" border="1" align="left" cellpadding="1">
  <form action="" method="get" name="myform">

  <tr>
    <td width="151"><label>Company Name</label></td>
    <td width="158"><input type="text" name="companyname" id="companyname" /></td>
    <td width="155">Enquiry Date</td>
    <td width="213"><input type="text" name="enquiry_date" id="enquiry_date" class="datepicker" /></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Conference Date In</td>
    <td><input type="text" name="conference_date_in" id="conference_date_in" class="datepicker" /></td>
    <td>Conference Date Out</td>
    <td><input type="text" name="conference_date_out" id="conference_date_out" class="datepicker" /></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Number of Delegates</td>
    <td><input type="text" name="no_of_delegates" id="no_of_delegates" /></td>
    <td>Total Days</td>
  <td><input type="text" name="total_days" id="total_days" /></td>
  </tr>
  </form>
</table>
</div>
</body>
</html>

<script type="text/javascript">

$(function() {
    $(".datepicker").datepicker({ minDate: -0, maxDate: "+100M +10D",dateFormat: 'dd-mm-yy'})
    ({
        changeMonth: true,
        changeYear: true,
    });
        });


var enquiry_date = $.datepicker.formatDate('dd-mm-yy', new Date());
document.getElementById('enquiry_date').value = enquiry_date;

var calcDate = function() {
    var start = $('#conference_date_in').datepicker('getDate');
    var end = $('#conference_date_out').datepicker('getDate');
    var days = (end - start) / 1000 / 60 / 60 / 24;

    document.getElementById('total_days').value = days;
}


$('#conference_date_out').change(calcDate);
$('#conference_date_in').change(calcDate);
</script>
4

3 に答える 3

1

UI の更新を if ステートメントでラップするだけです

if( days >= 0 ) {
    document.getElementById('total_days').value = days;
} else {
    alert( "Nice try, but you can't go backwards in time" );
}
于 2012-05-30T19:58:27.303 に答える
1

数値の絶対値 (符号なしの値) を検索する場合は、 を使用しますMath.abs

于 2012-05-30T19:58:45.053 に答える
0
$(document).ready(function() {
    $(".datepicker").datepicker({ minDate: -0, maxDate: "+100M +10D",dateFormat: 'dd-mm-yy', changeMonth: true, changeYear: true });        

var enquiry_date = $.datepicker.formatDate('dd-mm-yy', new Date());
$('#enquiry_date').val(enquiry_date);

var calcDate = function() {
    var start = $('#conference_date_in').datepicker('getDate');
    var end = $('#conference_date_out').datepicker('getDate');
    if (start << end) {
        var days = (end - start) / 1000 / 60 / 60 / 24;
        $('total_days').val(days);
    } else {
        alert('Day Out must be after the Day In. Try again.');
    }
}


$('#conference_date_out').change(calcDate);
$('#conference_date_in').change(calcDate);

});
于 2012-05-30T20:06:14.853 に答える