2012-05-30 31 views
0

當我計算開始日期和結束日期之間的差異時 - 結束日期有可能被輸入爲「開始日期之前」 - 因此在「totaldays」中允許負值計算值」。 )我已經使用「min」來確保開始日期不能「在今天之前」。 )jquery計算後阻止負值

也有可能是「TOTAL_DAYS」的結果(計算結果)被隱藏,直到計算完成 - 也就是說,這樣你就不會看到長十進制值:如-15489.916666666666

我試圖完成這個我自己的,但有非常非常有限的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> 
+1

這裏的問題究竟是什麼?具體說明你需要什麼幫助......「請爲我做」問題在這裏沒有太多牽引力 –

+0

@ThinkingSites:我將「total_days」乘以1嗎? – user1426583

+0

@RobertLevy:我的道歉不夠具體 - 我的問題是:我會採取什麼措施防止「total_days」結果中出現負值?即,如果結束日期在開始日期之前,那麼結果顯示爲負數...我將如何去防止這種情況發生?我希望更具體的,我再次致歉 – user1426583

回答

1

只是包裝你的UI更新的if語句

if(days >= 0) { 
    document.getElementById('total_days').value = days; 
} else { 
    alert("Nice try, but you can't go backwards in time"); 
} 
+0

非常感謝你 – user1426583

+0

沒問題...只要點擊向上箭頭和綠色複選標記,如果這有助於你 –

1

當你搜索一個號碼(不帶符號的值)的絕對值,使用Math.abs

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); 

});