2010-03-24 102 views
0

如果用戶輸入一個輸入說3到文本框三個小文本框應該顯示在下面或通過JavaScript或jQuery的彈出。如何做到這一點...動態添加元素從jquery或javascript

<input type="text" name="order">3</input> 

謝謝..

回答

2

記住你應該掩蓋文本框只允許數字條目......或者,也許用一個下拉列表,用數字來防止錯誤的列表。但here是一個很好的jQuery蒙板插件來防止非數字條目。

<input type="text" name="Order" onKeyDown="checkVal(this)">3</input> 

<div id="myDiv"> 
</div> 


function checkVal(ctrl){ 
    var val = ctrl.value; 
    $('myDiv').html(''); // remove existing elements 
    for (i=0;i<parseInt(val,10);i++){ 
     $('#myDiv').append('<input type="text" />'); 
    } 
} 
+0

由於..................... – Hulk 2010-03-24 13:27:17

+2

始終指定基數作爲第二個參數,以parseInt函數。這可以確保像0xAF和類似輸入的輸入不會以不需要的基數解析 – PatrikAkerstrand 2010-03-24 13:27:40

+2

這會將4個文本框放入div中,而不是3.您需要將其更改爲i ryanulit 2010-03-24 13:28:32

8

給這個<input/>「秩序」的ID,那麼它的那樣簡單:

var order = $('#order'), 
    container = $('<div/>').insertAfter(order); 

order.keyup(function(){ 
    container.html(
     Array(Math.abs(~~this.value) + 1).join('<input/>') 
    ); 
}); 

僅供參考,~~(雙位操作不)具有獲得的任何數量表示的效果鍵入(使用內部toInt32操作),然後對其進行鋪設。 E.g:

~~'2'; // => 2 
~~'2.333'; // => 2 
~~null; // => 0 

而且Math.abs是爲了防止負值,如果傳遞給Array()將拋出一個錯誤。

DEMO:http://jsbin.com/azexa4

+1

絕對比接受的答案要好。 – 2010-03-24 13:53:07

+0

當然。當然。 – 2010-03-24 13:58:29

+0

如果你解釋雙位NOT地板,可能會對大多數讀者有所幫助。 :) – miketaylr 2010-03-24 14:00:38