一旦用户选择了他们想要的房间类型以及他们入住的天数,我如何计算他们的住宿总费用?
我不太确定如何获取用户选择的房间并将其乘以 diffDays 以获得总费用。
<!DOCTYPE html>
<html>
<head>
<script>
function check() {
var date1 = new Date(document.getElementById('checkin').value);
var date2 = new Date(document.getElementById('checkout').value);
var diff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(diff / (1000 * 3600 * 24));
if (date1 > date2){
alert("Check-out date must be after check-in date!")
}
else {
calculate();
}
}
//function calculate();
// if (document.getElementById("standard")
// var report = this.value * 50 * dayDiff;
</script>
<body>
<form>
<fieldset>
<legend>Reserve Hotel Room</legend>
Check-In Date:<br>
<input type="date" id="checkin" name="checkin" required>
<br><br>
Check-Out Date:<br>
<input type="date" id="checkout" name="checkout" required>
<br><br>
Room:
<select id="room" name="room" onchange="report(this.value)">
<option id="standard" value="50">Standard ($50/night)</option>
<option id="queen" value="75">Queen ($75/night)</option>
<option id="king" value="100">King ($100/night)</option>
<option id="business" value="125">Business ($125/night)</option>
<option id="deluxe" value="150">Deluxe Suite ($150/night)</option>
</select>
<button type="submit" onclick="check()">Submit</button>
</fieldset>
</form>
</body>
我将如何执行计算函数,将所选房间的值(value)乘以天数差值?
** 我不想使用日期选择器。
最佳答案
您可以通过以下方式查看天数
// contains the difference in milliseconds
diffDate = (checkOutDate - checkInDate),
// contains the difference in days
diffDays = 1 + (diffDate / 1000 / 60 / 60 / 24);
// total cost for their stay
selectedRoomRate = $("#room").val();
selectedRoomTotalCost = selectedRoomRate * diffDays;
更新于2016年11月11日:
更新了代码片段以返回成本。
更新于2016年11月12日:
<input list="roomList">
在输入值时只会为您带来建议。要获取选择房间类型的选项,您需要 <select>
标签。
尝试以下代码片段:
function check() {
var checkInDate = new Date($("#checkin").val()),
checkOutDate = new Date($("#checkout").val()),
diffDate = (checkOutDate - checkInDate),
diffDays = 1 + (diffDate / 1000 / 60 / 60 / 24),
selectedRoomRate = $("#room").val(),
selectedRoomTotalCost;
if (diffDate < 0) {
alert("Check-out date must be after check-in date!");
return;
}
selectedRoomTotalCost = selectedRoomRate * diffDays;
alert('Total Cost: $' + selectedRoomTotalCost);
}
<!DOCTYPE html>
<html>
<meta charset=utf-8>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<head>
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<link rel="stylesheet" href="settings.css">
<title>Tranquility Hotels Limited</title>
<script>
</script>
</head>
<body>
<div class="center">
<form>
<fieldset>
<legend>Reserve Hotel Room</legend>
First Name:
<input type="text" name="firstname" placeholder="First Name" size="25" pattern="[A-Za-z-]+" title="Alphabet characters only." required>Last Name:
<input type="text" name="lastname" placeholder="Last Name" size="25" pattern="[A-Za-z-]+" title="Alphabet characters only." required>
<br>
<br>Street Address:
<input type="text" name="street" placeholder="1234 Awesome Street" size="30" pattern="[A-Za-z0-9 ]+" title="Alphabet characters and numbers only." required>City:
<input type="text" name="city" placeholder="Cleveland" size="30" pattern="[A-Za-z ]+" title="Alphabet characters only." required>
<br>
<br>State:
<input list="states" name="state" placeholder="OH" size="10" required>
<datalist id="states">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option>
<option value="NH">New Hampshire</option>
<option value="NJ">New Jersey</option>
<option value="NM">New Mexico</option>
<option value="NY">New York</option>
<option value="NC">North Carolina</option>
<option value="ND">North Dakota</option>
<option value="OH">Ohio</option>
<option value="OK">Oklahoma</option>
<option value="OR">Oregon</option>
<option value="PA">Pennsylvania</option>
<option value="RI">Rhode Island</option>
<option value="SC">South Carolina</option>
<option value="SD">South Dakota</option>
<option value="TN">Tennessee</option>
<option value="TX">Texas</option>
<option value="UT">Utah</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="WV">West Virginia</option>
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>
</datalist>
Zip Code:
<input type="text" name="zipcode" placeholder="12345" size="10" pattern="[0-9]+" title="Numbers only." required>
<br>
<br>Phone Number:
<input type="text" name="phone" size="25" placeholder="440-123-4567" pattern="[0-9]+" title="Numbers only." required>E-mail:
<input type="email" name="email" size="25" placeholder="email@domain.com" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$" required>
<br>
<br>Check-In Date:
<input type="date" id="checkin" name="checkin" value="2015-07-05" required>Check-Out Date:
<input type="date" id="checkout" name="checkout" value="2015-07-17" required>
<br>
<br>Room:
<select id="room" name="room" required>
<option value="50" selected>Standard ($50/night)</option>
<option value="75">Queen ($75/night)</option>
<option value="100">King ($100/night)</option>
<option value="125">Business ($125/night)</option>
<option value="150">Deluxe Suite ($150/night)</option>
</select>
<button type="submit" onclick="check()">Submit</button>
</fieldset>
</form>
</div>
</body>
</html>
关于javascript - 如何获取用户输入的选定房间并将其乘以两个日期之间的天数差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40544351/