表單的數量則是由選取的數字去決定,特別的一點式選擇5個表單,則增加6個表單
其他則是照選取的數字而新增幾個
我這個範例呢,用文字方塊取代表單作為說明;範例程式碼包含著一個下拉式選擇以及一個div區塊,id為form
選取下拉式選單時,會觸發onchange事件,事件對應的動作為change (num)
可以由下面程式碼得知,我用index去取得使用者選取的值
從值去判斷選取數值,超過5,則必須執行六次
透過JQuery的append去新增至form id內的文字方塊,id為test+i
function change (num) {
reload ();
index = num.options[num.selectedIndex].value;
switch(parseInt(index)){
case 1:
case 2:
case 3:
case 4:
addTextArea ();
break;
case 5:
index = parseInt(index) + 1;
addTextArea ();
break;
default:
break;
}
}
觸發事件時,我們必須清除原先新增的文字方塊,否則會重疊並造成id重複的問題
所以有另外寫一個reload的函數
reload是透過JQuery的empty做清除form底下的元素
function reload () {
$('#form').empty();
switch(parseInt(index)){
case 1:
case 2:
case 3:
case 4:
clean();
break;
case 5:
index = parseInt(index) + 1;
clean();
break;
default:
break;
}
}
以下是程式碼:
<!DOCTYPE html>
<html lang="zh-tw">
<head>
<meta charset="utf-8">
<title>Demo</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script type="text/javascript">
var index = 0;
function change (num) {
reload ();
index = num.options[num.selectedIndex].value;
switch(parseInt(index)){
case 1:
case 2:
case 3:
case 4:
addTextArea ();
break;
case 5:
index = parseInt(index) + 1;
addTextArea ();
break;
default:
break;
}
}
function addTextArea () {
for(i = 1; i <= index; i++){
$('#form').append('<textarea placeholder=test id=test'+i+'>')
.append('<br>');
}
}
function clean () {
for(i = 1; i <= index; i++){
$('.test' + i).remove();
}
}
function reload () {
$('#form').empty();
switch(parseInt(index)){
case 1:
case 2:
case 3:
case 4:
clean();
break;
case 5:
index = parseInt(index) + 1;
clean();
break;
default:
break;
}
}
</script>
</head>
<body>
<select class="selectItem" onchange="change(this)">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
<div id="form"></div>
</body>
</html>
執行結果:
參考資料:
http://api.jquery.com/empty/
http://api.jquery.com/remove/
http://api.jquery.com/append/
http://api.jquery.com/clone/
http://api.jquery.com/attr/
http://edisonx.pixnet.net/blog/post/84832134
http://t.data321.cn/article-45878-1.html
http://stackoverflow.com/questions/7885639/javascript-error-document-getelementsbyid-is-not-a-function
http://www.dotblogs.com.tw/wadehuang36/archive/2010/08/25/jqueryattrclassname.aspx
http://www.w3cplus.com/jquery/attr-removeAttr
http://bigone2000.pixnet.net/blog/post/55174550
http://www.javaworld.com.tw/jute/post/view?bid=42&id=131360&tpg=1&ppg=1&sty=1
http://www.wretch.cc/blog/agreeupon/34667988

