2012-05-30 30 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); 

});