![](/img/trans.png)
[英]Letting forms interact with javascript in an if/else statement
[英]If statement in javascript forms
我對javascript很陌生,但是在HTML方面有一些經驗。 我正在嘗試創建一個表格,該表格允許我從下拉菜單中選擇一個選項,該菜單根據從下拉菜單中選擇的選項進一步擴展該表格(在同一頁面上顯示新字段)。 我認為我需要某種if語句來實現此目的,但是我似乎無法找出正確的方法來實現。 我已經可以使用下拉菜單了。 我會將我已經擁有的代碼放在這里,但是由於某種原因,它不能讓我感謝您的幫助
編輯 -通過HTML整理注釋中的代碼
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 11 February 2007), see www.w3.org" />
<title>Ipod Inventory</title>
<script language="JavaScript" type="text/javascript">
//<![CDATA[
function submitSelect(form) { alert (form.reason.selectedIndex); document.body.innerHTML() = "<h3>NEW STUFF<h3>"; }
//]]>
</script>
</head>
<body>
<h3>General</h3>Employee Requesting:
<form>
<input type="text" name="employee" value="" />
</form>
<form name="myform" action="" method="get" id="myform">
Reason: <select name="reason">
<option>
Conference/Meeting
</option>
<option>
Loaner
</option>
</select> <input type="button" name="submit" value="Submit" onclick=
"submitSelect(this.form)" /><br />
</form>
</body>
</html>
您可以做的是將頁面分成不同的div
部分,下拉菜單中每種情況對應一個。 然后,您可以使用來更改這些div
的display
屬性
element.style.display = 'none'
要么
element.style.display = 'block'
如果您的設置較為復雜,則可能需要創建一個字段列表,該字段對於組合框中的每個項目都應可見,然后使用相同的技術進行顯示/隱藏。
例如,您將有一個帶有男性和女性的下拉列表。 然后,您將不得不div
元素,其id
將是male
或female
。 那你會用
function toggle() {
if (document.getElementById('selector').value == 'male') {
document.getElementById('male').style.display = 'block';
document.getElementById('female').style.display = 'none';
}
else {
document.getElementById('male').style.display = 'none';
document.getElementById('female').style.display = 'block';
}
}
var selectmenu=document.getElementById("mymenu")
selectmenu.onchange=function(){ //run some code when "onchange" event fires
var chosenoption=this.options[this.selectedIndex] //this refers to "selectmenu"
if (chosenoption.value!="nothing"){
window.open(chosenoption.value, "", "") //open target site (based on option's value attr) in new window
}
}
那就是您需要使用的if條件,該示例還顯示了如何綁定更改事件。.( 從javascript工具包中提取的代碼段 )
您要做的是從原因選擇框的onchange
事件開始:
<select name="reason" id="reason" onchange="myFunc();">
myFunc()
(對不起,這個名字我不是很有創意)將在其中顯示/隱藏其他輸入(可能不是其他形式) ,因為通常將輸入收集到頁面上的單個表格中。 每個輸入(或一組輸入)都應位於其自己的<div>
標記中,然后可以使用該標記的element.style.display
屬性顯示/隱藏輸入,如其他答案所述。 例如,您的表單中可能包含以下內容:
<form name="myform" action="" method="get" id="myform">
Reason: <select name="reason" id="reason" onchange="myFunc()">
<option>
Conference/Meeting
</option>
<option>
Loaner
</option>
</select>
<div id="conferenceInputs">
Conference:
<select name="conferenceSelectBox" id="conferenceSelectBox">
<option>Option 1</option>
<option>Option 2</option>
</select>
</div>
<div id="loanerInputs">
Loaner:
<select name="loanerSelectBox" id="loanerSelectBox">
<option>Option 1</option>
<option>Option 2</option>
</select>
</div>
<input type="button" name="submit" value="Submit" onclick="submitSelect(this.form)" />
</form>
myFunc()
javascript看起來像這樣:
function myFunc() {
var selectElem = document.getElementById('reason');
var optionText = selectElem.options[selectElem.selectedIndex].text;
switch(optionText) {
case "Conference/Meeting":
document.getElementById('conferenceInputs').style.display = 'block';
document.getElementById('loanerInputs').style.display = 'none';
break;
case "Loaner":
document.getElementById('loanerInputs').style.display = 'block';
document.getElementById('conferenceInputs').style.display = 'none';
break;
default:
}
}
最后,您希望有一個可在HTML頁面中加載的javascript函數- <body onload="anotherFunc()">
,該函數將div
的style.display屬性都設置為“ none”,以便它們不會出現在用戶選擇任何東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.