2010-03-24 170 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