javascript,html中select框中的始发地和目的地发生变化时,如何计算航班费用?
How to calculate with javascript, flight costs when origin and destination changes in select box in html?
如果用户更改出发地或目的地国家/地区,我正在尝试计算航班费用。
我正在用 if....else 尝试它,我尝试用 switch...case 但没有让它像我想要的那样工作。
它确实在第一个 if
前停下了。
如果我用 else if
尝试它,它只会计算最后一部分。
这是来自 if....else 分支的片段。
function change(object) {
document.f.control.value = object.name + ", " + object.value + ", Content new";
var a = document.getElementById("1")
var b = document.getElementById("2")
var c = document.getElementById("3")
var d = document.getElementById("4")
var e = document.getElementById("5")
var a = 150;
var b = 200;
var c = 250;
var d = 300;
var e = 350;
if (result = a + a){
alert("The Cost of your journey will be about: " + result + "€");
}
else if (result = a + b){
alert("The Cost of your journey will be about: " + result + "€");
}
else if (result = a + c){
alert("The Cost of your journey will be about: " + result + "€");
}
else if (result = a + d){
alert("The Cost of your journey will be about: " + result + "€");
}
else if (result = a + e){
alert("The Cost of your journey will be about: " + result + "€");
}
这是完整的代码:
<!doctype html>
<!-- Written by Igor Stefanovic -->
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formular eigenes Beispiel 4.7</title>
<style> body {background: url(bIecaU.jpg) no-repeat scroll ; display: flex; background-size: cover;background-color: rgba(0,0,0,0);}
select {border-color: aqua; background-color: rgba(0,0,0,0); font-family: Arial; color: aqua; display: flex;}
input {border-color: aqua; background-color: rgba(0,0,0,0); font-family: Arial; color: aqua; display: flex;}
checkbox {border-color: aqua; background-color: rgba(0,0,0,0); font-family: Arial; color: aqua; display: flex;}
textarea {border-color: aqua; background-color: rgba(0,0,0,0); font-family: Arial; color: aqua; display: flex;}
h3 {display: flex;}
p {display: flex;}
@media only screen and (min-width: 600px) {
/* For tablets: */
.col-s-1 {width: 8.33%;}
.col-s-2 {width: 16.66%;}
.col-s-3 {width: 25%;}
.col-s-4 {width: 33.33%;}
.col-s-5 {width: 41.66%;}
.col-s-6 {width: 50%;}
.col-s-7 {width: 58.33%;}
.col-s-8 {width: 66.66%;}
.col-s-9 {width: 75%;}
.col-s-10 {width: 83.33%;}
.col-s-11 {width: 91.66%;}
.col-s-12 {width: 100%;}
}
@media only screen and (min-width: 768px) {
/* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
}
</style>
<script>
function change(object) {
document.f.control.value = object.name + ", " + object.value + ", Content new";
let outbound = document.getElementsByClassName('outbound')[0].value
, returnFlight = document.getElementsByClassName('return')[0].value
, map = [0, 150, 200, 250, 300, 350]
, result = map[parseInt(outbound)] + map[parseInt(returnFlight)];
alert("The Cost of your journey will be about: " + result + "€");
}
function turning(object) {
document.f.control.value = object.name + ", " + object.value + ", Content changed";
}
function marked(object) {
if (object.checked) {
document.getElementsByClassName("returnflight")[0].style.visibility = "hidden";
document.getElementsByClassName("dateofreturn")[0].style.visibility = "hidden";
document.f.control.value = object.name + ", " + object.value + " marked.";
} else {
document.getElementsByClassName("returnflight")[0].style.visibility = "unset";
document.getElementsByClassName("dateofreturn")[0].style.visibility = "unset";
document.f.control.value = object.name + ", " + object.value + " not marked.";
}
}
function send()
{
return confirm("Do you want to send the form?");
}
function abort() {
return confirm("Do you want to reset the form?");
}
function calculate(object)
{
}
</script>
</head>
<body>
<form name="f" method="post" action="event_form_eigbsp.php" onsubmit="return send();" onreset="return abort();">
<input name="mrmrs" type="radio" value="Mr." onclick="change(this);" checked="checked"> Mr.
<input name="mrmrs" type="radio" value="Mrs" onclick="change(this);"> Mrs.<br>
<input name="name" value="Name" size="20" onchange="change(this);"> Name <br>
<input name="surname" value="Surname" size="20" onkeyup="turn(this);"> Surname<br>
<input name="street" value="Street" size="20" onkeyup="turn(this);"> Street <input name="nr" value=" " size="3" onchange="change(this);"> Nr.<br>
<input name="city" value="City" size="20" onchange="change(this);"> City<br>
<input name="postalcode" type="number" value="Postal Code" size="6" onchange="change(this);"> Postal Code<br><br>
<select name="land" onchange="change(this);">
<option value="Switzerland" selected="selected">Switzerland</option><br>
<option value="Germany">Germany</option>
<option value="Austria">Austria</option>
<option value="United Kingdom">United Kingdom</option>
<option value="France">France</option>
<option value="Italy">Italy</option>
<option value="Portugal">Portugal</option>
<option value="Spain">Spain</option>
<option value="Ireland">Ireland</option>
<option value="Iceland">Iceland</option>
<option value="Netherlands">Netherlands</option>
<option value="Belgium">Belgium</option>
<option value="Luxembourgh">Luxembourgh</option>
<option value="Denmark">Denmark</option>
<option value="Finland">Finland</option>
<option value="Sweden">Sweden</option>
<option value="Norway">Norway</option>
<option value="Poland">Poland</option>
<option value="Russia">Russia</option>
<option value="Ukraine">Ukraine</option>
<option value="Romania">Romania</option>
<option value="Hungary">Hungary</option>
<option value="Czech Republic">Czech Republic</option>
<option value="Slovakia">Slowakia</option>
<option value="Slovenia">Slovenia</option>
<option value="Croatia">Croatia</option>
<option value="Bosnia & Herzegowina">Bosnia & Herzegovina</option>
<option value="Serbia">Serbia</option>
<option value="Montenegro">Montenegro</option>
<option value="Albania">Albania</option>
<option value="Bulgary">Bulgary</option>
<option value="Turkey">Turkey</option>
<option value="Israel">Israel</option>
<option value="Belarus">Belarus</option>
<option value="Latvia">Latvia</option>
<option value="Lithuania">Lithuania</option>
<option value="Estonia">Estonia</option>
<option value="Moldova">Moldova</option>
<option value="North Makedonia">North Makedonia</option>
<option value="Greece">Greece</option>
<option value="Gibraltar">Gibraltar</option>
<option value="Malta">Malte</option>
<option value="Monte Carlo">Monte Carlo</option>
<option value="Liechtenstein">Liechtenstein</option>
</select> Country of Residence<br><br>
<input name="dateofbirth" type="date" value="Date of Birth" onkeypress="turn(this);"> Date of Birth<br><br>
<input class="flight" name="flight" type="checkbox" value="Only One Way" onclick="marked(this);"> Only One Way<br><br>Outbound Country Return Flight Country<br>
<select class="outboundflight" id="outboundflight" name="outboundflight" onchange="change(this);">
<option value="1" selected="selected">Switzerland</option>
<option class="outbound" value="1">Germany</option>
<option class="outbound" value="1">Austria</option>
<option class="outbound" value="2">United Kingdom</option>
<option class="outbound" value="1">France</option>
<option class="outbound" value="1">Italy</option>
<option class="outbound" value="2">Portugal</option>
<option class="outbound" value="2">Spain</option>
<option class="outbound" value="4">Ireland</option>
<option class="outbound" value="5">Iceland</option>
<option class="outbound" value="2">Netherlands</option>
<option class="outbound" value="2">Belgium</option>
<option class="outbound" value="1">Luxembourgh</option>
<option class="outbound" value="2">Denmark</option>
<option class="outbound" value="4">Finland</option>
<option class="outbound" value="4">Sweden</option>
<option class="outbound" value="4">Norway</option>
<option class="outbound" value="2">Poland</option>
<option class="outbound" value="4">Russia</option>
<option class="outbound" value="4">Ukraine</option>
<option class="outbound" value="4">Romania</option>
<option class="outbound" value="2">Hungary</option>
<option class="outbound" value="2">Czech Republic</option>
<option class="outbound" value="1">Slowakia</option>
<option class="outbound" value="1">Slovenia</option>
<option class="outbound" value="2">Croatia</option>
<option class="outbound" value="3">Bosnia & Herzegovina</option>
<option class="outbound" value="3">Serbia</option>
<option class="outbound" value="3">Montenegro</option>
<option class="outbound" value="4">Albania</option>
<option class="outbound" value="4">Bulgary</option>
<option class="outbound" value="5">Turkey</option>
<option class="outbound" value="5">Israel</option>
<option class="outbound" value="4">Belarus</option>
<option class="outbound" value="3">Latvia</option>
<option class="outbound" value="3">Lithuania</option>
<option class="outbound" value="2">Estonia</option>
<option class="outbound" value="4">Moldova</option>
<option class="outbound" value="4">North Makedonia</option>
<option class="outbound" value="4">Greece</option>
<option class="outbound" value="2">Gibraltar</option>
<option class="outbound" value="2">Malte</option>
<option class="outbound" value="2">Monte Carlo</option>
<option class="outbound" value="1">Liechtenstein</option>
</select>
<select class="returnflight" id="returnflight" name="returnflight" onchange="change(this);">
<option class="return" value="1" selected="selected">Switzerland</option>
<option class="return" value="1">Germany</option>
<option class="return" value="1">Austria</option>
<option class="return" value="2">United Kingdom</option>
<option class="return" value="1">France</option>
<option class="return" value="1">Italy</option>
<option class="return" value="2">Portugal</option>
<option class="return" value="2">Spain</option>
<option class="return" value="4">Ireland</option>
<option class="return" value="5">Iceland</option>
<option class="return" value="2">Netherlands</option>
<option class="return" value="2">Belgium</option>
<option class="return" value="1">Luxembourgh</option>
<option class="return" value="2">Denmark</option>
<option class="return" value="4">Finland</option>
<option class="return" value="4">Sweden</option>
<option class="return" value="4">Norway</option>
<option class="return" value="2">Poland</option>
<option class="return" value="4">Russia</option>
<option class="return" value="4">Ukraine</option>
<option class="return" value="4">Romania</option>
<option class="return" value="2">Hungary</option>
<option class="return" value="2">Czech Republic</option>
<option class="return" value="1">Slowakia</option>
<option class="return" value="1">Slovenia</option>
<option class="return" value="2">Croatia</option>
<option class="return" value="3">Bosnia & Herzegovina</option>
<option class="return" value="3">Serbia</option>
<option class="return" value="3">Montenegro</option>
<option class="return" value="4">Albania</option>
<option class="return" value="4">Bulgary</option>
<option class="return" value="5">Turkey</option>
<option class="return" value="5">Israel</option>
<option class="return" value="4">Belarus</option>
<option class="return" value="3">Latvia</option>
<option class="return" value="3">Lithuania</option>
<option class="return" value="2">Estonia</option>
<option class="return" value="4">Moldova</option>
<option class="return" value="4">North Makedonia</option>
<option class="return" value="4">Greece</option>
<option class="return" value="2">Gibraltar</option>
<option class="return" value="2">Malte</option>
<option class="return" value="2">Monte Carlo</option>
<option class="return" value="1">Liechtenstein</option>
</select><br><br>Date of Outbound Date of Return<br>
<input class="dateofoutbound" name="dateofoutbound" type="date" onchange="turning(this);"> <input class="dateofreturn" name="dateofreturn" type="date" onclick="turning(this);">
<br><br>
<textarea name="comment" rows="6" cols="20" type="text" value="comment" onchange="change(this);"></textarea>Comments<br><br>
<input name="control" type="text" value="control" size="50" readonly="readonly"><br><br>
<input type="submit" value="Send"><input type="reset" value="Reset">
</form>
</body>
</html>
我已经更新了代码,但结果仍然只有 300 的值
尝试这样的事情:
<select id="outbound" class="outbound" name="outbound" onchange="change(this);">
<select id="return" class="returnflight" name="returnflight" onchange="change(this);">
全部value=""
改为value="<id-value>"
function change(object) {
document.f.control.value = object.name + ", " + object.value + ", Content new";
let outbound = document.getElementById('outbound').value
, returnFlight = document.getElementById('return').value
, map = [0, 150, 200, 250, 300, 350]
, result = map[parseInt(outbound)] + map[parseInt(returnFlight)]
alert("The Cost of your journey will be about: " + result + "€")
}
这可能符合您的要求。
该代码尚未经过测试。如有错误,请评论。
注意:如果您收到 NaN,可能是因为您将 value=""
替换为文字 value="<id-value>"
。我的意思是您需要使用您已经用于 id="".
的值
我的意思是这样的:
<!doctype html>
<!-- Written by Igor Stefanovic -->
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formular eigenes Beispiel 4.7</title>
<style> body {background: url(bIecaU.jpg) no-repeat scroll ; display: flex; background-size: cover;background-color: rgba(0,0,0,0);}
select {border-color: aqua; background-color: rgba(0,0,0,0); font-family: Arial; color: aqua; display: flex;}
input {border-color: aqua; background-color: rgba(0,0,0,0); font-family: Arial; color: aqua; display: flex;}
checkbox {border-color: aqua; background-color: rgba(0,0,0,0); font-family: Arial; color: aqua; display: flex;}
textarea {border-color: aqua; background-color: rgba(0,0,0,0); font-family: Arial; color: aqua; display: flex;}
h3 {display: flex;}
p {display: flex;}
@media only screen and (min-width: 600px) {
/* For tablets: */
.col-s-1 {width: 8.33%;}
.col-s-2 {width: 16.66%;}
.col-s-3 {width: 25%;}
.col-s-4 {width: 33.33%;}
.col-s-5 {width: 41.66%;}
.col-s-6 {width: 50%;}
.col-s-7 {width: 58.33%;}
.col-s-8 {width: 66.66%;}
.col-s-9 {width: 75%;}
.col-s-10 {width: 83.33%;}
.col-s-11 {width: 91.66%;}
.col-s-12 {width: 100%;}
}
@media only screen and (min-width: 768px) {
/* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
}
</style>
<script>
function change(object) {
document.f.control.value = object.name + ", " + object.value + ", Content new";
let outbound = document.getElementById('outbound').value
, returnFlight = document.getElementById('return').value
, map = [0, 150, 200, 250, 300, 350]
, result = map[parseInt(outbound)] + map[parseInt(returnFlight)]
alert("The Cost of your journey will be about: " + result + "€")
}
function turning(object) {
document.f.control.value = object.name + ", " + object.value + ", Content changed";
}
function marked(object) {
if (object.checked) {
document.getElementsByClassName("returnflight")[0].style.visibility = "hidden";
document.getElementsByClassName("dateofreturn")[0].style.visibility = "hidden";
document.f.control.value = object.name + ", " + object.value + " marked.";
} else {
document.getElementsByClassName("returnflight")[0].style.visibility = "unset";
document.getElementsByClassName("dateofreturn")[0].style.visibility = "unset";
document.f.control.value = object.name + ", " + object.value + " not marked.";
}
}
function send() {
return confirm("Do you want to send the form?");
}
function abort() {
return confirm("Do you want to reset the form?");
}
function calculate(object) {
}
</script>
Form written by Igor Stefanovic<br><br>
</head>
<body>
<form name="f" method="post" action="event_form_eigbsp.php" onsubmit="return send();" onreset="return abort();">
<input name="mrmrs" type="radio" value="Mr." onclick="change(this);" checked="checked"> Mr.
<input name="mrmrs" type="radio" value="Mrs" onclick="change(this);"> Mrs.<br>
<input name="name" value="Name" size="20" onchange="change(this);"> Name <br>
<input name="surname" value="Surname" size="20" onkeyup="turn(this);"> Surname<br>
<input name="street" value="Street" size="20" onkeyup="turn(this);"> Street <input name="nr" value=" " size="3" onchange="change(this);"> Nr.<br>
<input name="city" value="City" size="20" onchange="change(this);"> City<br>
<input name="postalcode" type="number" value="Postal Code" size="6" onchange="change(this);"> Postal Code<br><br>
<select name="land" onchange="change(this);">
<option value="Switzerland" selected="selected">Switzerland</option><br>
<option value="Germany">Germany</option>
<option value="Austria">Austria</option>
<option value="United Kingdom">United Kingdom</option>
<option value="France">France</option>
<option value="Italy">Italy</option>
<option value="Portugal">Portugal</option>
<option value="Spain">Spain</option>
<option value="Ireland">Ireland</option>
<option value="Iceland">Iceland</option>
<option value="Netherlands">Netherlands</option>
<option value="Belgium">Belgium</option>
<option value="Luxembourgh">Luxembourgh</option>
<option value="Denmark">Denmark</option>
<option value="Finland">Finland</option>
<option value="Sweden">Sweden</option>
<option value="Norway">Norway</option>
<option value="Poland">Poland</option>
<option value="Russia">Russia</option>
<option value="Ukraine">Ukraine</option>
<option value="Romania">Romania</option>
<option value="Hungary">Hungary</option>
<option value="Czech Republic">Czech Republic</option>
<option value="Slovakia">Slowakia</option>
<option value="Slovenia">Slovenia</option>
<option value="Croatia">Croatia</option>
<option value="Bosnia & Herzegowina">Bosnia & Herzegovina</option>
<option value="Serbia">Serbia</option>
<option value="Montenegro">Montenegro</option>
<option value="Albania">Albania</option>
<option value="Bulgary">Bulgary</option>
<option value="Turkey">Turkey</option>
<option value="Israel">Israel</option>
<option value="Belarus">Belarus</option>
<option value="Latvia">Latvia</option>
<option value="Lithuania">Lithuania</option>
<option value="Estonia">Estonia</option>
<option value="Moldova">Moldova</option>
<option value="North Makedonia">North Makedonia</option>
<option value="Greece">Greece</option>
<option value="Gibraltar">Gibraltar</option>
<option value="Malta">Malte</option>
<option value="Monte Carlo">Monte Carlo</option>
<option value="Liechtenstein">Liechtenstein</option>
</select> Country of Residence<br><br>
<input name="dateofbirth" type="date" value="Date of Birth" onkeypress="turn(this);"> Date of Birth<br><br>
<input class="flight" name="flight" type="checkbox" value="Only One Way" onclick="marked(this);"> Only One Way<br><br>Outbound Country Return Flight Country<br>
<select id="outbound" class="outbound" name="outbound" onchange="change(this);">
<option value="1" selected="selected">Switzerland</option>
<option value="1">Germany</option>
<option value="1">Austria</option>
<option value="2">United Kingdom</option>
<option value="1">France</option>
<option value="1">Italy</option>
<option value="2">Portugal</option>
<option value="2">Spain</option>
<option value="4">Ireland</option>
<option value="5">Iceland</option>
<option value="2">Netherlands</option>
<option value="2">Belgium</option>
<option value="1">Luxembourgh</option>
<option value="2">Denmark</option>
<option value="4">Finland</option>
<option value="4">Sweden</option>
<option value="4">Norway</option>
<option value="2">Poland</option>
<option value="4">Russia</option>
<option value="4">Ukraine</option>
<option value="4">Romania</option>
<option value="2">Hungary</option>
<option value="2">Czech Republic</option>
<option value="1">Slowakia</option>
<option value="1">Slovenia</option>
<option value="2">Croatia</option>
<option value="3">Bosnia & Herzegovina</option>
<option value="3">Serbia</option>
<option value="3">Montenegro</option>
<option value="4">Albania</option>
<option value="4">Bulgary</option>
<option value="5">Turkey</option>
<option value="5">Israel</option>
<option value="4">Belarus</option>
<option value="3">Latvia</option>
<option value="3">Lithuania</option>
<option value="2">Estonia</option>
<option value="4">Moldova</option>
<option value="4">North Makedonia</option>
<option value="4">Greece</option>
<option value="2">Gibraltar</option>
<option value="2">Malte</option>
<option value="2">Monte Carlo</option>
<option value="1">Liechtenstein</option>
</select>
<select id="return" class="returnflight" name="returnflight" onchange="change(this);">
<option value="1" selected="selected">Switzerland</option>
<option value="1">Germany</option>
<option value="1">Austria</option>
<option value="2">United Kingdom</option>
<option value="1">France</option>
<option value="1">Italy</option>
<option value="2">Portugal</option>
<option value="2">Spain</option>
<option value="4">Ireland</option>
<option value="5">Iceland</option>
<option value="2">Netherlands</option>
<option value="2">Belgium</option>
<option value="1">Luxembourgh</option>
<option value="2">Denmark</option>
<option value="4">Finland</option>
<option value="4">Sweden</option>
<option value="4">Norway</option>
<option value="2">Poland</option>
<option value="4">Russia</option>
<option value="4">Ukraine</option>
<option value="4">Romania</option>
<option value="2">Hungary</option>
<option value="2">Czech Republic</option>
<option value="1">Slowakia</option>
<option value="1">Slovenia</option>
<option value="2">Croatia</option>
<option value="3">Bosnia & Herzegovina</option>
<option value="3">Serbia</option>
<option value="3">Montenegro</option>
<option value="4">Albania</option>
<option value="4">Bulgary</option>
<option value="5">Turkey</option>
<option value="5">Israel</option>
<option value="4">Belarus</option>
<option value="3">Latvia</option>
<option value="3">Lithuania</option>
<option value="2">Estonia</option>
<option value="4">Moldova</option>
<option value="4">North Makedonia</option>
<option value="4">Greece</option>
<option value="2">Gibraltar</option>
<option value="2">Malte</option>
<option value="2">Monte Carlo</option>
<option value="1">Liechtenstein</option>
</select>
<br><br>Date of Outbound Date of Return<br>
<input class="dateofoutbound" name="dateofoutbound" type="date" onchange="turning(this);"> <input class="dateofreturn" name="dateofreturn" type="date" onclick="turning(this);">
<br><br>
<textarea name="comment" rows="6" cols="20" type="text" value="comment" onchange="change(this);"></textarea>Comments<br><br>
<input name="control" type="text" value="control" size="50" readonly="readonly"><br><br>
<input type="submit" value="Send"><input type="reset" value="Reset">
</form>
</body>
</html>
我假设这就是你想要的?
以上解决方案有效。也许你没有尝试过?不管怎样,既然你提到你更新了代码,我就复制了新代码并改进了它,但是我错误地从@MisterJojo 的答案中复制了代码(我一开始没注意到还有另一个答案,我以为是 OP 更新了代码)。
总之,由于我改进了它,这里是:
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Formular eigenes Beispiel 4.7</title>
<style>
* { box-sizing: border-box }
form { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; font-size: 14px }
form fieldset { margin-top: 1em; width: 30.476em }
form fieldset.flight { display: inline-block; width: 15em }
form legend { font-style: oblique; padding: 0 1em }
form label { display: block; float: left; margin: .3em 0 }
form label.c1 span { padding: 0 2em 0 .2em }
form label.c2 { clear: both }
form label.c2 span { font-size: .9em; padding-right: .2em }
form label.c2 input,
form label.c2 select { display: block; clear: left }
form div { display: block; float: left; margin-right: .5em }
form div.c3 { clear: left }
form fieldset textarea { width: 99.588% }
form > input[name=control] { width: 32em }
</style>
<form name="reservation-form" action="event_form_eigbsp.php" method="POST">
<fieldset>
<legend>Civility</legend>
<label class="c1">
<input name="mrmrs" type="radio" value="Mr." checked>
<span> Mr. </span>
</label>
<label class="c1">
<input name="mrmrs" type="radio" value="Mrs">
<span> Mrs. </span>
</label>
<label class="c2">
<span> Name </span>
<input size="26" name="name" placeholder="your Name" required>
</label>
<label class="c2">
<span> Surname </span>
<input size="26" name="surname" placeholder="Surname">
</label>
<div class="c3">
<label class="c2">
<span> Street </span>
<input size="26" name="street" placeholder="Street" required>
</label>
</div>
<div>
<label class="c2">
<span> Nr. </span>
<input size="3" name="nr" required>
</label>
</div>
<div class="c3">
<label class="c2">
<span> City </span>
<input size="26" name="city" placeholder="City" required>
</label>
</div>
<div>
<label class="c2">
<span> ZIP </span>
<input size="6" name="postalcode" placeholder="Postal Code" required>
</label>
</div>
<label class="c2">
<span> Country of Residence </span>
<select id="land" name="land" ></select>
</label>
<label class="c2">
<span> Date of Birth </span>
<input name="dateofbirth" type="date" required>
</label>
</fieldset>
<fieldset class="flight">
<legend>outbound flight</legend>
<label class="c1">
<input name="flight" type="checkbox" value="Only One Way" checked>
<span> Only One Way</span> <br><br>
</label>
<label class="c2">
<span>Outbound Country</span>
<select id="outbound" name="outbound"></select>
</label>
<label class="c2">
<span>Date of Outbound </span>
<input name="dateofoutbound" type="date" required>
</label>
</fieldset>
<fieldset class="flight">
<legend>return flight</legend>
<label class="c2">
<span>Return Flight Country</span>
<select id="returnflight" name="returnflight" disabled></select>
</label>
<label class="c2">
<span>Date of Return </span>
<input name="dateofreturn" type="date" disabled required>
</label>
</fieldset>
<fieldset>
<legend>Comments</legend>
<textarea name="comment" rows="6" placeholder="comment"></textarea>
</fieldset>
<br>
<input name="control" type="text" size="46" readonly="readonly">
<br>
<br>
<button type="submit">Send</button>
<button type="reset">Reset</button>
</form>
<script>
const countries = [
[0, 'Austria']
, [0, 'France']
, [0, 'Germany']
, [0, 'Italy']
, [0, 'Liechtenstein']
, [0, 'Luxembourgh']
, [0, 'Slovakia']
, [0, 'Slovenia']
, [0, 'Switzerland']
, [1, 'Belgium']
, [1, 'Croatia']
, [1, 'Czech Republic']
, [1, 'Denmark']
, [1, 'Estonia']
, [1, 'Gibraltar']
, [1, 'Hungary']
, [1, 'Malte']
, [1, 'Monte Carlo']
, [1, 'Netherlands']
, [1, 'Poland']
, [1, 'Portugal']
, [1, 'Spain']
, [1, 'United Kingdom']
, [2, 'Bosnia & Herzegovina']
, [2, 'Latvia']
, [2, 'Lithuania']
, [2, 'Montenegro']
, [2, 'Serbia']
, [3, 'Albania']
, [3, 'Belarus']
, [3, 'Bulgary']
, [3, 'Finland']
, [3, 'Greece']
, [3, 'Ireland']
, [3, 'Moldova']
, [3, 'North Makedonia']
, [3, 'Norway']
, [3, 'Romania']
, [3, 'Russia']
, [3, 'Sweden']
, [3, 'Ukraine']
, [4, 'Iceland']
, [4, 'Israel']
, [4, 'Turkey']
]
const
reservForm = document.forms['reservation-form']
, costs = [150, 200, 250, 300, 350]
, cost = e => {
let cost = costs[reservForm.outbound.value] + (reservForm.flight.checked ? 0 : costs[reservForm.returnflight.value])
, lib = reservForm.outbound[reservForm.outbound.selectedIndex].textContent
, ret = reservForm.flight.checked ? '' : ', (' + reservForm.returnflight[reservForm.returnflight.selectedIndex].textContent + ')'
reservForm.control.value = `The Cost of your journey will be about: ${cost} € -- (${lib})${ret}`
}
countries.sort( (a, b) => {
if (a[1] < b[1])
return -1
if (a[1] > b[1])
return 1
return 0
} )
countries.forEach(c => {
reservForm.land.add(new Option(c[1], c[1]))
reservForm.outbound.add(new Option(c[1], c[0]))
reservForm.returnflight.add(new Option(c[1], c[0]))
})
reservForm.addEventListener( 'submit', e => {
if (!confirm("Do you want to send the form?")) e.preventDefault()
} )
reservForm.addEventListener( 'reset', e => {
if (!confirm("Do you want to reset the form?")) e.preventDefault()
} )
reservForm.flight.addEventListener( 'input', e => {
reservForm.returnflight.disabled = reservForm.flight.checked
reservForm.dateofreturn.disabled = reservForm.flight.checked
reservForm.dateofreturn.required = reservForm.flight.checked
cost()
} )
reservForm.outbound.addEventListener( 'change', cost )
reservForm.returnflight.addEventListener( 'change', cost )
cost()
</script>
HTML5表格处理方式:
PS; JS代码必须放在</body>
标签之前。
否则在脚本
上使用 defer
属性
或 DOMContentLoaded
事件。
const countries =
[ { cod: 0, lib:'Switzerland' }, { cod: 0, lib:'Germany' }, { cod: 0, lib:'Austria' }
, { cod: 1, lib:'United Kingdom' }, { cod: 0, lib:'France' }, { cod: 0, lib:'Italy' }
, { cod: 1, lib:'Portugal' }, { cod: 1, lib:'Spain' }, { cod: 3, lib:'Ireland' }
, { cod: 4, lib:'Iceland' }, { cod: 1, lib:'Netherlands' }, { cod: 1, lib:'Belgium' }
, { cod: 0, lib:'Luxembourgh' }, { cod: 1, lib:'Denmark' }, { cod: 3, lib:'Finland' }
, { cod: 3, lib:'Sweden' }, { cod: 3, lib:'Norway' }, { cod: 1, lib:'Poland' }
, { cod: 3, lib:'Russia' }, { cod: 3, lib:'Ukraine' }, { cod: 3, lib:'Romania' }
, { cod: 1, lib:'Hungary' }, { cod: 1, lib:'Czech Republic' }, { cod: 0, lib:'Slovakia' }
, { cod: 0, lib:'Slovenia' }, { cod: 1, lib:'Croatia' }, { cod: 2, lib:'Bosnia & Herzegovina' }
, { cod: 2, lib:'Serbia' }, { cod: 2, lib:'Montenegro' }, { cod: 3, lib:'Albania' }
, { cod: 3, lib:'Bulgary' }, { cod: 4, lib:'Turkey' }, { cod: 4, lib:'Israel' }
, { cod: 3, lib:'Belarus' }, { cod: 2, lib:'Latvia' }, { cod: 2, lib:'Lithuania' }
, { cod: 1, lib:'Estonia' }, { cod: 3, lib:'Moldova' }, { cod: 3, lib:'North Makedonia' }
, { cod: 3, lib:'Greece' }, { cod: 1, lib:'Gibraltar' }, { cod: 1, lib:'Malte' }
, { cod: 1, lib:'Monte Carlo' }, { cod: 0, lib:'Liechtenstein' } ]
const
reservForm = document.forms['reservation-form']
costs = [ 150 , 200 , 250, 300 , 350 ]
;
countries.forEach(c=>
{
reservForm.land.add (new Option( c.lib, c.lib ) )
reservForm.outbound.add (new Option( c.lib, c.cod ) )
reservForm.returnflight.add (new Option( c.lib, c.cod ) )
})
reservForm.onsubmit = e =>
{
if (!confirm("Do you want to send the form?")) e.preventDefault()
}
reservForm.onreset = e =>
{
if (!confirm("Do you want to reset the form?")) e.preventDefault()
}
reservForm.flight.oninput = () =>
{
reservForm.returnflight.disabled = reservForm.flight.checked
reservForm.dateofreturn.disabled = reservForm.flight.checked
reservForm.dateofreturn.required = reservForm.flight.checked
}
reservForm.outbound.onchange = () =>
{
let cost = costs[reservForm.outbound.value]
, lib = reservForm.outbound[reservForm.outbound.selectedIndex].textContent
;
reservForm.control.value = `The Cost of your journey will be about: ${cost} € -- (${lib})`
}
form {
font-family : 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
font-size : 14px;
}
form fieldset {
margin-top: 1em;
width : 28.3em;
}
form fieldset.flight {
display: inline-block;
width : 13em;
}
form legend {
font-style : oblique;
padding : 0 1em;
}
form label {
display : block;
float : left;
margin : .3em 0;
}
form label.c1 span {
padding : 0 2em 0 .2em;
}
form label.c2 {
clear : both;
}
form label.c2 span {
font-size : .9em;
padding-right : .2em;
}
form label.c2 input,
form label.c2 select {
display: block;
clear: left;
}
form div {
display : block;
float : left;
margin-right : .5em;
}
form div.c3 {
clear : left;
}
form fieldset textarea{
width : 96%;
}
<form name="reservation-form" method="post" action="event_form_eigbsp.php" >
<fieldset>
<legend>Civility</legend>
<label class="c1">
<input name="mrmrs" type="radio" value="Mr." checked >
<span> Mr. </span>
</label>
<label class="c1">
<input name="mrmrs" type="radio" value="Mrs">
<span> Mrs. </span>
</label>
<label class="c2">
<span> Name </span>
<input size="26" name="name" placeholder="your Name" required>
</label>
<label class="c2">
<span> Surname </span>
<input size="26" name="surname" placeholder="Surname">
</label>
<div class="c3">
<label class="c2">
<span> Street </span>
<input size="26" name="street" placeholder="Street" required>
</label>
</div>
<div>
<label class="c2">
<span> Nr. </span>
<input size="3" name="nr" required >
</label>
</div>
<div class="c3">
<label class="c2">
<span> City </span>
<input size="26" name="city" placeholder="City" required>
</label>
</div>
<div>
<label class="c2">
<span> ZIP </span>
<input size="6" name="postalcode" placeholder="Postal Code" required>
</label>
</div>
<label class="c2">
<span> Country of Residence </span>
<select name="land" ></select>
</label>
<label class="c2">
<span> Date of Birth </span>
<input name="dateofbirth" type="date" required>
</label>
</fieldset>
<fieldset class="flight">
<legend>outbound flight</legend>
<label class="c1">
<input name="flight" type="checkbox" value="Only One Way" checked >
<span> Only One Way</span> <br><br>
</label>
<label class="c2">
<span>Outbound Country</span>
<select name="outbound"></select>
</label>
<label class="c2">
<span>Date of Outbound </span>
<input name="dateofoutbound" type="date" required>
</label>
</fieldset>
<fieldset class="flight">
<legend>return flight</legend>
<label class="c2">
<span>Return Flight Country</span>
<select name="returnflight" disabled></select>
</label>
<label class="c2">
<span>Date of Return </span>
<input name="dateofreturn" type="date" disabled required>
</label>
</fieldset>
<fieldset>
<legend>Comments</legend>
<textarea name="comment" rows="6" placeholder="comment" ></textarea>
</fieldset>
<br>
<input name="control" type="text" value="control" size="46" readonly="readonly"><br><br>
<button type="submit">Send</button>
<button type="reset">Reset</button>
</form>
如果用户更改出发地或目的地国家/地区,我正在尝试计算航班费用。
我正在用 if....else 尝试它,我尝试用 switch...case 但没有让它像我想要的那样工作。
它确实在第一个 if
前停下了。
如果我用 else if
尝试它,它只会计算最后一部分。
这是来自 if....else 分支的片段。
function change(object) {
document.f.control.value = object.name + ", " + object.value + ", Content new";
var a = document.getElementById("1")
var b = document.getElementById("2")
var c = document.getElementById("3")
var d = document.getElementById("4")
var e = document.getElementById("5")
var a = 150;
var b = 200;
var c = 250;
var d = 300;
var e = 350;
if (result = a + a){
alert("The Cost of your journey will be about: " + result + "€");
}
else if (result = a + b){
alert("The Cost of your journey will be about: " + result + "€");
}
else if (result = a + c){
alert("The Cost of your journey will be about: " + result + "€");
}
else if (result = a + d){
alert("The Cost of your journey will be about: " + result + "€");
}
else if (result = a + e){
alert("The Cost of your journey will be about: " + result + "€");
}
这是完整的代码:
<!doctype html>
<!-- Written by Igor Stefanovic -->
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formular eigenes Beispiel 4.7</title>
<style> body {background: url(bIecaU.jpg) no-repeat scroll ; display: flex; background-size: cover;background-color: rgba(0,0,0,0);}
select {border-color: aqua; background-color: rgba(0,0,0,0); font-family: Arial; color: aqua; display: flex;}
input {border-color: aqua; background-color: rgba(0,0,0,0); font-family: Arial; color: aqua; display: flex;}
checkbox {border-color: aqua; background-color: rgba(0,0,0,0); font-family: Arial; color: aqua; display: flex;}
textarea {border-color: aqua; background-color: rgba(0,0,0,0); font-family: Arial; color: aqua; display: flex;}
h3 {display: flex;}
p {display: flex;}
@media only screen and (min-width: 600px) {
/* For tablets: */
.col-s-1 {width: 8.33%;}
.col-s-2 {width: 16.66%;}
.col-s-3 {width: 25%;}
.col-s-4 {width: 33.33%;}
.col-s-5 {width: 41.66%;}
.col-s-6 {width: 50%;}
.col-s-7 {width: 58.33%;}
.col-s-8 {width: 66.66%;}
.col-s-9 {width: 75%;}
.col-s-10 {width: 83.33%;}
.col-s-11 {width: 91.66%;}
.col-s-12 {width: 100%;}
}
@media only screen and (min-width: 768px) {
/* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
}
</style>
<script>
function change(object) {
document.f.control.value = object.name + ", " + object.value + ", Content new";
let outbound = document.getElementsByClassName('outbound')[0].value
, returnFlight = document.getElementsByClassName('return')[0].value
, map = [0, 150, 200, 250, 300, 350]
, result = map[parseInt(outbound)] + map[parseInt(returnFlight)];
alert("The Cost of your journey will be about: " + result + "€");
}
function turning(object) {
document.f.control.value = object.name + ", " + object.value + ", Content changed";
}
function marked(object) {
if (object.checked) {
document.getElementsByClassName("returnflight")[0].style.visibility = "hidden";
document.getElementsByClassName("dateofreturn")[0].style.visibility = "hidden";
document.f.control.value = object.name + ", " + object.value + " marked.";
} else {
document.getElementsByClassName("returnflight")[0].style.visibility = "unset";
document.getElementsByClassName("dateofreturn")[0].style.visibility = "unset";
document.f.control.value = object.name + ", " + object.value + " not marked.";
}
}
function send()
{
return confirm("Do you want to send the form?");
}
function abort() {
return confirm("Do you want to reset the form?");
}
function calculate(object)
{
}
</script>
</head>
<body>
<form name="f" method="post" action="event_form_eigbsp.php" onsubmit="return send();" onreset="return abort();">
<input name="mrmrs" type="radio" value="Mr." onclick="change(this);" checked="checked"> Mr.
<input name="mrmrs" type="radio" value="Mrs" onclick="change(this);"> Mrs.<br>
<input name="name" value="Name" size="20" onchange="change(this);"> Name <br>
<input name="surname" value="Surname" size="20" onkeyup="turn(this);"> Surname<br>
<input name="street" value="Street" size="20" onkeyup="turn(this);"> Street <input name="nr" value=" " size="3" onchange="change(this);"> Nr.<br>
<input name="city" value="City" size="20" onchange="change(this);"> City<br>
<input name="postalcode" type="number" value="Postal Code" size="6" onchange="change(this);"> Postal Code<br><br>
<select name="land" onchange="change(this);">
<option value="Switzerland" selected="selected">Switzerland</option><br>
<option value="Germany">Germany</option>
<option value="Austria">Austria</option>
<option value="United Kingdom">United Kingdom</option>
<option value="France">France</option>
<option value="Italy">Italy</option>
<option value="Portugal">Portugal</option>
<option value="Spain">Spain</option>
<option value="Ireland">Ireland</option>
<option value="Iceland">Iceland</option>
<option value="Netherlands">Netherlands</option>
<option value="Belgium">Belgium</option>
<option value="Luxembourgh">Luxembourgh</option>
<option value="Denmark">Denmark</option>
<option value="Finland">Finland</option>
<option value="Sweden">Sweden</option>
<option value="Norway">Norway</option>
<option value="Poland">Poland</option>
<option value="Russia">Russia</option>
<option value="Ukraine">Ukraine</option>
<option value="Romania">Romania</option>
<option value="Hungary">Hungary</option>
<option value="Czech Republic">Czech Republic</option>
<option value="Slovakia">Slowakia</option>
<option value="Slovenia">Slovenia</option>
<option value="Croatia">Croatia</option>
<option value="Bosnia & Herzegowina">Bosnia & Herzegovina</option>
<option value="Serbia">Serbia</option>
<option value="Montenegro">Montenegro</option>
<option value="Albania">Albania</option>
<option value="Bulgary">Bulgary</option>
<option value="Turkey">Turkey</option>
<option value="Israel">Israel</option>
<option value="Belarus">Belarus</option>
<option value="Latvia">Latvia</option>
<option value="Lithuania">Lithuania</option>
<option value="Estonia">Estonia</option>
<option value="Moldova">Moldova</option>
<option value="North Makedonia">North Makedonia</option>
<option value="Greece">Greece</option>
<option value="Gibraltar">Gibraltar</option>
<option value="Malta">Malte</option>
<option value="Monte Carlo">Monte Carlo</option>
<option value="Liechtenstein">Liechtenstein</option>
</select> Country of Residence<br><br>
<input name="dateofbirth" type="date" value="Date of Birth" onkeypress="turn(this);"> Date of Birth<br><br>
<input class="flight" name="flight" type="checkbox" value="Only One Way" onclick="marked(this);"> Only One Way<br><br>Outbound Country Return Flight Country<br>
<select class="outboundflight" id="outboundflight" name="outboundflight" onchange="change(this);">
<option value="1" selected="selected">Switzerland</option>
<option class="outbound" value="1">Germany</option>
<option class="outbound" value="1">Austria</option>
<option class="outbound" value="2">United Kingdom</option>
<option class="outbound" value="1">France</option>
<option class="outbound" value="1">Italy</option>
<option class="outbound" value="2">Portugal</option>
<option class="outbound" value="2">Spain</option>
<option class="outbound" value="4">Ireland</option>
<option class="outbound" value="5">Iceland</option>
<option class="outbound" value="2">Netherlands</option>
<option class="outbound" value="2">Belgium</option>
<option class="outbound" value="1">Luxembourgh</option>
<option class="outbound" value="2">Denmark</option>
<option class="outbound" value="4">Finland</option>
<option class="outbound" value="4">Sweden</option>
<option class="outbound" value="4">Norway</option>
<option class="outbound" value="2">Poland</option>
<option class="outbound" value="4">Russia</option>
<option class="outbound" value="4">Ukraine</option>
<option class="outbound" value="4">Romania</option>
<option class="outbound" value="2">Hungary</option>
<option class="outbound" value="2">Czech Republic</option>
<option class="outbound" value="1">Slowakia</option>
<option class="outbound" value="1">Slovenia</option>
<option class="outbound" value="2">Croatia</option>
<option class="outbound" value="3">Bosnia & Herzegovina</option>
<option class="outbound" value="3">Serbia</option>
<option class="outbound" value="3">Montenegro</option>
<option class="outbound" value="4">Albania</option>
<option class="outbound" value="4">Bulgary</option>
<option class="outbound" value="5">Turkey</option>
<option class="outbound" value="5">Israel</option>
<option class="outbound" value="4">Belarus</option>
<option class="outbound" value="3">Latvia</option>
<option class="outbound" value="3">Lithuania</option>
<option class="outbound" value="2">Estonia</option>
<option class="outbound" value="4">Moldova</option>
<option class="outbound" value="4">North Makedonia</option>
<option class="outbound" value="4">Greece</option>
<option class="outbound" value="2">Gibraltar</option>
<option class="outbound" value="2">Malte</option>
<option class="outbound" value="2">Monte Carlo</option>
<option class="outbound" value="1">Liechtenstein</option>
</select>
<select class="returnflight" id="returnflight" name="returnflight" onchange="change(this);">
<option class="return" value="1" selected="selected">Switzerland</option>
<option class="return" value="1">Germany</option>
<option class="return" value="1">Austria</option>
<option class="return" value="2">United Kingdom</option>
<option class="return" value="1">France</option>
<option class="return" value="1">Italy</option>
<option class="return" value="2">Portugal</option>
<option class="return" value="2">Spain</option>
<option class="return" value="4">Ireland</option>
<option class="return" value="5">Iceland</option>
<option class="return" value="2">Netherlands</option>
<option class="return" value="2">Belgium</option>
<option class="return" value="1">Luxembourgh</option>
<option class="return" value="2">Denmark</option>
<option class="return" value="4">Finland</option>
<option class="return" value="4">Sweden</option>
<option class="return" value="4">Norway</option>
<option class="return" value="2">Poland</option>
<option class="return" value="4">Russia</option>
<option class="return" value="4">Ukraine</option>
<option class="return" value="4">Romania</option>
<option class="return" value="2">Hungary</option>
<option class="return" value="2">Czech Republic</option>
<option class="return" value="1">Slowakia</option>
<option class="return" value="1">Slovenia</option>
<option class="return" value="2">Croatia</option>
<option class="return" value="3">Bosnia & Herzegovina</option>
<option class="return" value="3">Serbia</option>
<option class="return" value="3">Montenegro</option>
<option class="return" value="4">Albania</option>
<option class="return" value="4">Bulgary</option>
<option class="return" value="5">Turkey</option>
<option class="return" value="5">Israel</option>
<option class="return" value="4">Belarus</option>
<option class="return" value="3">Latvia</option>
<option class="return" value="3">Lithuania</option>
<option class="return" value="2">Estonia</option>
<option class="return" value="4">Moldova</option>
<option class="return" value="4">North Makedonia</option>
<option class="return" value="4">Greece</option>
<option class="return" value="2">Gibraltar</option>
<option class="return" value="2">Malte</option>
<option class="return" value="2">Monte Carlo</option>
<option class="return" value="1">Liechtenstein</option>
</select><br><br>Date of Outbound Date of Return<br>
<input class="dateofoutbound" name="dateofoutbound" type="date" onchange="turning(this);"> <input class="dateofreturn" name="dateofreturn" type="date" onclick="turning(this);">
<br><br>
<textarea name="comment" rows="6" cols="20" type="text" value="comment" onchange="change(this);"></textarea>Comments<br><br>
<input name="control" type="text" value="control" size="50" readonly="readonly"><br><br>
<input type="submit" value="Send"><input type="reset" value="Reset">
</form>
</body>
</html>
我已经更新了代码,但结果仍然只有 300 的值
尝试这样的事情:
<select id="outbound" class="outbound" name="outbound" onchange="change(this);">
<select id="return" class="returnflight" name="returnflight" onchange="change(this);">
全部value=""
改为value="<id-value>"
function change(object) {
document.f.control.value = object.name + ", " + object.value + ", Content new";
let outbound = document.getElementById('outbound').value
, returnFlight = document.getElementById('return').value
, map = [0, 150, 200, 250, 300, 350]
, result = map[parseInt(outbound)] + map[parseInt(returnFlight)]
alert("The Cost of your journey will be about: " + result + "€")
}
这可能符合您的要求。 该代码尚未经过测试。如有错误,请评论。
注意:如果您收到 NaN,可能是因为您将 value=""
替换为文字 value="<id-value>"
。我的意思是您需要使用您已经用于 id="".
我的意思是这样的:
<!doctype html>
<!-- Written by Igor Stefanovic -->
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formular eigenes Beispiel 4.7</title>
<style> body {background: url(bIecaU.jpg) no-repeat scroll ; display: flex; background-size: cover;background-color: rgba(0,0,0,0);}
select {border-color: aqua; background-color: rgba(0,0,0,0); font-family: Arial; color: aqua; display: flex;}
input {border-color: aqua; background-color: rgba(0,0,0,0); font-family: Arial; color: aqua; display: flex;}
checkbox {border-color: aqua; background-color: rgba(0,0,0,0); font-family: Arial; color: aqua; display: flex;}
textarea {border-color: aqua; background-color: rgba(0,0,0,0); font-family: Arial; color: aqua; display: flex;}
h3 {display: flex;}
p {display: flex;}
@media only screen and (min-width: 600px) {
/* For tablets: */
.col-s-1 {width: 8.33%;}
.col-s-2 {width: 16.66%;}
.col-s-3 {width: 25%;}
.col-s-4 {width: 33.33%;}
.col-s-5 {width: 41.66%;}
.col-s-6 {width: 50%;}
.col-s-7 {width: 58.33%;}
.col-s-8 {width: 66.66%;}
.col-s-9 {width: 75%;}
.col-s-10 {width: 83.33%;}
.col-s-11 {width: 91.66%;}
.col-s-12 {width: 100%;}
}
@media only screen and (min-width: 768px) {
/* For desktop: */
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
}
</style>
<script>
function change(object) {
document.f.control.value = object.name + ", " + object.value + ", Content new";
let outbound = document.getElementById('outbound').value
, returnFlight = document.getElementById('return').value
, map = [0, 150, 200, 250, 300, 350]
, result = map[parseInt(outbound)] + map[parseInt(returnFlight)]
alert("The Cost of your journey will be about: " + result + "€")
}
function turning(object) {
document.f.control.value = object.name + ", " + object.value + ", Content changed";
}
function marked(object) {
if (object.checked) {
document.getElementsByClassName("returnflight")[0].style.visibility = "hidden";
document.getElementsByClassName("dateofreturn")[0].style.visibility = "hidden";
document.f.control.value = object.name + ", " + object.value + " marked.";
} else {
document.getElementsByClassName("returnflight")[0].style.visibility = "unset";
document.getElementsByClassName("dateofreturn")[0].style.visibility = "unset";
document.f.control.value = object.name + ", " + object.value + " not marked.";
}
}
function send() {
return confirm("Do you want to send the form?");
}
function abort() {
return confirm("Do you want to reset the form?");
}
function calculate(object) {
}
</script>
Form written by Igor Stefanovic<br><br>
</head>
<body>
<form name="f" method="post" action="event_form_eigbsp.php" onsubmit="return send();" onreset="return abort();">
<input name="mrmrs" type="radio" value="Mr." onclick="change(this);" checked="checked"> Mr.
<input name="mrmrs" type="radio" value="Mrs" onclick="change(this);"> Mrs.<br>
<input name="name" value="Name" size="20" onchange="change(this);"> Name <br>
<input name="surname" value="Surname" size="20" onkeyup="turn(this);"> Surname<br>
<input name="street" value="Street" size="20" onkeyup="turn(this);"> Street <input name="nr" value=" " size="3" onchange="change(this);"> Nr.<br>
<input name="city" value="City" size="20" onchange="change(this);"> City<br>
<input name="postalcode" type="number" value="Postal Code" size="6" onchange="change(this);"> Postal Code<br><br>
<select name="land" onchange="change(this);">
<option value="Switzerland" selected="selected">Switzerland</option><br>
<option value="Germany">Germany</option>
<option value="Austria">Austria</option>
<option value="United Kingdom">United Kingdom</option>
<option value="France">France</option>
<option value="Italy">Italy</option>
<option value="Portugal">Portugal</option>
<option value="Spain">Spain</option>
<option value="Ireland">Ireland</option>
<option value="Iceland">Iceland</option>
<option value="Netherlands">Netherlands</option>
<option value="Belgium">Belgium</option>
<option value="Luxembourgh">Luxembourgh</option>
<option value="Denmark">Denmark</option>
<option value="Finland">Finland</option>
<option value="Sweden">Sweden</option>
<option value="Norway">Norway</option>
<option value="Poland">Poland</option>
<option value="Russia">Russia</option>
<option value="Ukraine">Ukraine</option>
<option value="Romania">Romania</option>
<option value="Hungary">Hungary</option>
<option value="Czech Republic">Czech Republic</option>
<option value="Slovakia">Slowakia</option>
<option value="Slovenia">Slovenia</option>
<option value="Croatia">Croatia</option>
<option value="Bosnia & Herzegowina">Bosnia & Herzegovina</option>
<option value="Serbia">Serbia</option>
<option value="Montenegro">Montenegro</option>
<option value="Albania">Albania</option>
<option value="Bulgary">Bulgary</option>
<option value="Turkey">Turkey</option>
<option value="Israel">Israel</option>
<option value="Belarus">Belarus</option>
<option value="Latvia">Latvia</option>
<option value="Lithuania">Lithuania</option>
<option value="Estonia">Estonia</option>
<option value="Moldova">Moldova</option>
<option value="North Makedonia">North Makedonia</option>
<option value="Greece">Greece</option>
<option value="Gibraltar">Gibraltar</option>
<option value="Malta">Malte</option>
<option value="Monte Carlo">Monte Carlo</option>
<option value="Liechtenstein">Liechtenstein</option>
</select> Country of Residence<br><br>
<input name="dateofbirth" type="date" value="Date of Birth" onkeypress="turn(this);"> Date of Birth<br><br>
<input class="flight" name="flight" type="checkbox" value="Only One Way" onclick="marked(this);"> Only One Way<br><br>Outbound Country Return Flight Country<br>
<select id="outbound" class="outbound" name="outbound" onchange="change(this);">
<option value="1" selected="selected">Switzerland</option>
<option value="1">Germany</option>
<option value="1">Austria</option>
<option value="2">United Kingdom</option>
<option value="1">France</option>
<option value="1">Italy</option>
<option value="2">Portugal</option>
<option value="2">Spain</option>
<option value="4">Ireland</option>
<option value="5">Iceland</option>
<option value="2">Netherlands</option>
<option value="2">Belgium</option>
<option value="1">Luxembourgh</option>
<option value="2">Denmark</option>
<option value="4">Finland</option>
<option value="4">Sweden</option>
<option value="4">Norway</option>
<option value="2">Poland</option>
<option value="4">Russia</option>
<option value="4">Ukraine</option>
<option value="4">Romania</option>
<option value="2">Hungary</option>
<option value="2">Czech Republic</option>
<option value="1">Slowakia</option>
<option value="1">Slovenia</option>
<option value="2">Croatia</option>
<option value="3">Bosnia & Herzegovina</option>
<option value="3">Serbia</option>
<option value="3">Montenegro</option>
<option value="4">Albania</option>
<option value="4">Bulgary</option>
<option value="5">Turkey</option>
<option value="5">Israel</option>
<option value="4">Belarus</option>
<option value="3">Latvia</option>
<option value="3">Lithuania</option>
<option value="2">Estonia</option>
<option value="4">Moldova</option>
<option value="4">North Makedonia</option>
<option value="4">Greece</option>
<option value="2">Gibraltar</option>
<option value="2">Malte</option>
<option value="2">Monte Carlo</option>
<option value="1">Liechtenstein</option>
</select>
<select id="return" class="returnflight" name="returnflight" onchange="change(this);">
<option value="1" selected="selected">Switzerland</option>
<option value="1">Germany</option>
<option value="1">Austria</option>
<option value="2">United Kingdom</option>
<option value="1">France</option>
<option value="1">Italy</option>
<option value="2">Portugal</option>
<option value="2">Spain</option>
<option value="4">Ireland</option>
<option value="5">Iceland</option>
<option value="2">Netherlands</option>
<option value="2">Belgium</option>
<option value="1">Luxembourgh</option>
<option value="2">Denmark</option>
<option value="4">Finland</option>
<option value="4">Sweden</option>
<option value="4">Norway</option>
<option value="2">Poland</option>
<option value="4">Russia</option>
<option value="4">Ukraine</option>
<option value="4">Romania</option>
<option value="2">Hungary</option>
<option value="2">Czech Republic</option>
<option value="1">Slowakia</option>
<option value="1">Slovenia</option>
<option value="2">Croatia</option>
<option value="3">Bosnia & Herzegovina</option>
<option value="3">Serbia</option>
<option value="3">Montenegro</option>
<option value="4">Albania</option>
<option value="4">Bulgary</option>
<option value="5">Turkey</option>
<option value="5">Israel</option>
<option value="4">Belarus</option>
<option value="3">Latvia</option>
<option value="3">Lithuania</option>
<option value="2">Estonia</option>
<option value="4">Moldova</option>
<option value="4">North Makedonia</option>
<option value="4">Greece</option>
<option value="2">Gibraltar</option>
<option value="2">Malte</option>
<option value="2">Monte Carlo</option>
<option value="1">Liechtenstein</option>
</select>
<br><br>Date of Outbound Date of Return<br>
<input class="dateofoutbound" name="dateofoutbound" type="date" onchange="turning(this);"> <input class="dateofreturn" name="dateofreturn" type="date" onclick="turning(this);">
<br><br>
<textarea name="comment" rows="6" cols="20" type="text" value="comment" onchange="change(this);"></textarea>Comments<br><br>
<input name="control" type="text" value="control" size="50" readonly="readonly"><br><br>
<input type="submit" value="Send"><input type="reset" value="Reset">
</form>
</body>
</html>
我假设这就是你想要的?
以上解决方案有效。也许你没有尝试过?不管怎样,既然你提到你更新了代码,我就复制了新代码并改进了它,但是我错误地从@MisterJojo 的答案中复制了代码(我一开始没注意到还有另一个答案,我以为是 OP 更新了代码)。
总之,由于我改进了它,这里是:
<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Formular eigenes Beispiel 4.7</title>
<style>
* { box-sizing: border-box }
form { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; font-size: 14px }
form fieldset { margin-top: 1em; width: 30.476em }
form fieldset.flight { display: inline-block; width: 15em }
form legend { font-style: oblique; padding: 0 1em }
form label { display: block; float: left; margin: .3em 0 }
form label.c1 span { padding: 0 2em 0 .2em }
form label.c2 { clear: both }
form label.c2 span { font-size: .9em; padding-right: .2em }
form label.c2 input,
form label.c2 select { display: block; clear: left }
form div { display: block; float: left; margin-right: .5em }
form div.c3 { clear: left }
form fieldset textarea { width: 99.588% }
form > input[name=control] { width: 32em }
</style>
<form name="reservation-form" action="event_form_eigbsp.php" method="POST">
<fieldset>
<legend>Civility</legend>
<label class="c1">
<input name="mrmrs" type="radio" value="Mr." checked>
<span> Mr. </span>
</label>
<label class="c1">
<input name="mrmrs" type="radio" value="Mrs">
<span> Mrs. </span>
</label>
<label class="c2">
<span> Name </span>
<input size="26" name="name" placeholder="your Name" required>
</label>
<label class="c2">
<span> Surname </span>
<input size="26" name="surname" placeholder="Surname">
</label>
<div class="c3">
<label class="c2">
<span> Street </span>
<input size="26" name="street" placeholder="Street" required>
</label>
</div>
<div>
<label class="c2">
<span> Nr. </span>
<input size="3" name="nr" required>
</label>
</div>
<div class="c3">
<label class="c2">
<span> City </span>
<input size="26" name="city" placeholder="City" required>
</label>
</div>
<div>
<label class="c2">
<span> ZIP </span>
<input size="6" name="postalcode" placeholder="Postal Code" required>
</label>
</div>
<label class="c2">
<span> Country of Residence </span>
<select id="land" name="land" ></select>
</label>
<label class="c2">
<span> Date of Birth </span>
<input name="dateofbirth" type="date" required>
</label>
</fieldset>
<fieldset class="flight">
<legend>outbound flight</legend>
<label class="c1">
<input name="flight" type="checkbox" value="Only One Way" checked>
<span> Only One Way</span> <br><br>
</label>
<label class="c2">
<span>Outbound Country</span>
<select id="outbound" name="outbound"></select>
</label>
<label class="c2">
<span>Date of Outbound </span>
<input name="dateofoutbound" type="date" required>
</label>
</fieldset>
<fieldset class="flight">
<legend>return flight</legend>
<label class="c2">
<span>Return Flight Country</span>
<select id="returnflight" name="returnflight" disabled></select>
</label>
<label class="c2">
<span>Date of Return </span>
<input name="dateofreturn" type="date" disabled required>
</label>
</fieldset>
<fieldset>
<legend>Comments</legend>
<textarea name="comment" rows="6" placeholder="comment"></textarea>
</fieldset>
<br>
<input name="control" type="text" size="46" readonly="readonly">
<br>
<br>
<button type="submit">Send</button>
<button type="reset">Reset</button>
</form>
<script>
const countries = [
[0, 'Austria']
, [0, 'France']
, [0, 'Germany']
, [0, 'Italy']
, [0, 'Liechtenstein']
, [0, 'Luxembourgh']
, [0, 'Slovakia']
, [0, 'Slovenia']
, [0, 'Switzerland']
, [1, 'Belgium']
, [1, 'Croatia']
, [1, 'Czech Republic']
, [1, 'Denmark']
, [1, 'Estonia']
, [1, 'Gibraltar']
, [1, 'Hungary']
, [1, 'Malte']
, [1, 'Monte Carlo']
, [1, 'Netherlands']
, [1, 'Poland']
, [1, 'Portugal']
, [1, 'Spain']
, [1, 'United Kingdom']
, [2, 'Bosnia & Herzegovina']
, [2, 'Latvia']
, [2, 'Lithuania']
, [2, 'Montenegro']
, [2, 'Serbia']
, [3, 'Albania']
, [3, 'Belarus']
, [3, 'Bulgary']
, [3, 'Finland']
, [3, 'Greece']
, [3, 'Ireland']
, [3, 'Moldova']
, [3, 'North Makedonia']
, [3, 'Norway']
, [3, 'Romania']
, [3, 'Russia']
, [3, 'Sweden']
, [3, 'Ukraine']
, [4, 'Iceland']
, [4, 'Israel']
, [4, 'Turkey']
]
const
reservForm = document.forms['reservation-form']
, costs = [150, 200, 250, 300, 350]
, cost = e => {
let cost = costs[reservForm.outbound.value] + (reservForm.flight.checked ? 0 : costs[reservForm.returnflight.value])
, lib = reservForm.outbound[reservForm.outbound.selectedIndex].textContent
, ret = reservForm.flight.checked ? '' : ', (' + reservForm.returnflight[reservForm.returnflight.selectedIndex].textContent + ')'
reservForm.control.value = `The Cost of your journey will be about: ${cost} € -- (${lib})${ret}`
}
countries.sort( (a, b) => {
if (a[1] < b[1])
return -1
if (a[1] > b[1])
return 1
return 0
} )
countries.forEach(c => {
reservForm.land.add(new Option(c[1], c[1]))
reservForm.outbound.add(new Option(c[1], c[0]))
reservForm.returnflight.add(new Option(c[1], c[0]))
})
reservForm.addEventListener( 'submit', e => {
if (!confirm("Do you want to send the form?")) e.preventDefault()
} )
reservForm.addEventListener( 'reset', e => {
if (!confirm("Do you want to reset the form?")) e.preventDefault()
} )
reservForm.flight.addEventListener( 'input', e => {
reservForm.returnflight.disabled = reservForm.flight.checked
reservForm.dateofreturn.disabled = reservForm.flight.checked
reservForm.dateofreturn.required = reservForm.flight.checked
cost()
} )
reservForm.outbound.addEventListener( 'change', cost )
reservForm.returnflight.addEventListener( 'change', cost )
cost()
</script>
HTML5表格处理方式:
PS; JS代码必须放在</body>
标签之前。
否则在脚本
上使用 defer
属性
或 DOMContentLoaded
事件。
const countries =
[ { cod: 0, lib:'Switzerland' }, { cod: 0, lib:'Germany' }, { cod: 0, lib:'Austria' }
, { cod: 1, lib:'United Kingdom' }, { cod: 0, lib:'France' }, { cod: 0, lib:'Italy' }
, { cod: 1, lib:'Portugal' }, { cod: 1, lib:'Spain' }, { cod: 3, lib:'Ireland' }
, { cod: 4, lib:'Iceland' }, { cod: 1, lib:'Netherlands' }, { cod: 1, lib:'Belgium' }
, { cod: 0, lib:'Luxembourgh' }, { cod: 1, lib:'Denmark' }, { cod: 3, lib:'Finland' }
, { cod: 3, lib:'Sweden' }, { cod: 3, lib:'Norway' }, { cod: 1, lib:'Poland' }
, { cod: 3, lib:'Russia' }, { cod: 3, lib:'Ukraine' }, { cod: 3, lib:'Romania' }
, { cod: 1, lib:'Hungary' }, { cod: 1, lib:'Czech Republic' }, { cod: 0, lib:'Slovakia' }
, { cod: 0, lib:'Slovenia' }, { cod: 1, lib:'Croatia' }, { cod: 2, lib:'Bosnia & Herzegovina' }
, { cod: 2, lib:'Serbia' }, { cod: 2, lib:'Montenegro' }, { cod: 3, lib:'Albania' }
, { cod: 3, lib:'Bulgary' }, { cod: 4, lib:'Turkey' }, { cod: 4, lib:'Israel' }
, { cod: 3, lib:'Belarus' }, { cod: 2, lib:'Latvia' }, { cod: 2, lib:'Lithuania' }
, { cod: 1, lib:'Estonia' }, { cod: 3, lib:'Moldova' }, { cod: 3, lib:'North Makedonia' }
, { cod: 3, lib:'Greece' }, { cod: 1, lib:'Gibraltar' }, { cod: 1, lib:'Malte' }
, { cod: 1, lib:'Monte Carlo' }, { cod: 0, lib:'Liechtenstein' } ]
const
reservForm = document.forms['reservation-form']
costs = [ 150 , 200 , 250, 300 , 350 ]
;
countries.forEach(c=>
{
reservForm.land.add (new Option( c.lib, c.lib ) )
reservForm.outbound.add (new Option( c.lib, c.cod ) )
reservForm.returnflight.add (new Option( c.lib, c.cod ) )
})
reservForm.onsubmit = e =>
{
if (!confirm("Do you want to send the form?")) e.preventDefault()
}
reservForm.onreset = e =>
{
if (!confirm("Do you want to reset the form?")) e.preventDefault()
}
reservForm.flight.oninput = () =>
{
reservForm.returnflight.disabled = reservForm.flight.checked
reservForm.dateofreturn.disabled = reservForm.flight.checked
reservForm.dateofreturn.required = reservForm.flight.checked
}
reservForm.outbound.onchange = () =>
{
let cost = costs[reservForm.outbound.value]
, lib = reservForm.outbound[reservForm.outbound.selectedIndex].textContent
;
reservForm.control.value = `The Cost of your journey will be about: ${cost} € -- (${lib})`
}
form {
font-family : 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
font-size : 14px;
}
form fieldset {
margin-top: 1em;
width : 28.3em;
}
form fieldset.flight {
display: inline-block;
width : 13em;
}
form legend {
font-style : oblique;
padding : 0 1em;
}
form label {
display : block;
float : left;
margin : .3em 0;
}
form label.c1 span {
padding : 0 2em 0 .2em;
}
form label.c2 {
clear : both;
}
form label.c2 span {
font-size : .9em;
padding-right : .2em;
}
form label.c2 input,
form label.c2 select {
display: block;
clear: left;
}
form div {
display : block;
float : left;
margin-right : .5em;
}
form div.c3 {
clear : left;
}
form fieldset textarea{
width : 96%;
}
<form name="reservation-form" method="post" action="event_form_eigbsp.php" >
<fieldset>
<legend>Civility</legend>
<label class="c1">
<input name="mrmrs" type="radio" value="Mr." checked >
<span> Mr. </span>
</label>
<label class="c1">
<input name="mrmrs" type="radio" value="Mrs">
<span> Mrs. </span>
</label>
<label class="c2">
<span> Name </span>
<input size="26" name="name" placeholder="your Name" required>
</label>
<label class="c2">
<span> Surname </span>
<input size="26" name="surname" placeholder="Surname">
</label>
<div class="c3">
<label class="c2">
<span> Street </span>
<input size="26" name="street" placeholder="Street" required>
</label>
</div>
<div>
<label class="c2">
<span> Nr. </span>
<input size="3" name="nr" required >
</label>
</div>
<div class="c3">
<label class="c2">
<span> City </span>
<input size="26" name="city" placeholder="City" required>
</label>
</div>
<div>
<label class="c2">
<span> ZIP </span>
<input size="6" name="postalcode" placeholder="Postal Code" required>
</label>
</div>
<label class="c2">
<span> Country of Residence </span>
<select name="land" ></select>
</label>
<label class="c2">
<span> Date of Birth </span>
<input name="dateofbirth" type="date" required>
</label>
</fieldset>
<fieldset class="flight">
<legend>outbound flight</legend>
<label class="c1">
<input name="flight" type="checkbox" value="Only One Way" checked >
<span> Only One Way</span> <br><br>
</label>
<label class="c2">
<span>Outbound Country</span>
<select name="outbound"></select>
</label>
<label class="c2">
<span>Date of Outbound </span>
<input name="dateofoutbound" type="date" required>
</label>
</fieldset>
<fieldset class="flight">
<legend>return flight</legend>
<label class="c2">
<span>Return Flight Country</span>
<select name="returnflight" disabled></select>
</label>
<label class="c2">
<span>Date of Return </span>
<input name="dateofreturn" type="date" disabled required>
</label>
</fieldset>
<fieldset>
<legend>Comments</legend>
<textarea name="comment" rows="6" placeholder="comment" ></textarea>
</fieldset>
<br>
<input name="control" type="text" value="control" size="46" readonly="readonly"><br><br>
<button type="submit">Send</button>
<button type="reset">Reset</button>
</form>