读书人

请教各位要达到这样的效果应该如何

发布时间: 2012-02-21 16:26:23 作者: rapoo

请问各位大虾,要达到这样的效果,应该怎么做?好急好急啊
在一个for循环的表格里,循环的次数控制表格的数量,
每个表格有多个产品,每个产品后面有1个输入框,如下图所示:

产品 描述 数量 出口数量
1 烦啊 (从数据库读取) (输入框)
2 急啊 (从数据库读取) (输入框)

问题是这样:
在产品1的输入框里输入数量,然后按enter,通过javascript计算,如果数量有剩余,那么在产品1的下面自动生成一行,如下图所示:

产品 描述 数量 出口数量
1 烦啊 (从数据库读取) (输入框)
1 烦啊 (剩余数量) (输入框)
2 急啊 (从数据库读取) (输入框)

然后光标自动移动到下一个输入框,
如果在新生成的这一行里,输入数量,通过javasctipt计算,如果还有剩余
那么再生成新的一行,如下图所示:

产品 描述 数量 出口数量
1 烦啊 (从数据库读取) (输入框)
1 烦啊 (剩余数量) (输入框)
1 烦啊 (剩余数量) (输入框)
2 急啊 (从数据库读取) (输入框)

光标继续自动往下移,请问要实现这个功能,应该怎么做?

想了2天了,找了很多资料,都没有实现,请问那个大虾可以帮帮忙,
我愿意以身相许啊~
老板要我今天交货,我还做不出来啊,555555555,急啊,帮帮忙,各位大虾

[解决办法]
<html>
<head>



</head>

<body >
<table border= "1 " width= "400 " cellpadding= "0 " cellspacing= "0 " id= "tb1 ">
<tr>
<td align= "center "> 产品 </td>
<td align= "center "> 描述 </td>
<td align= "center "> 数量 </td>
<td align= "center "> 输入 </td>
</tr>
<tr>
<td align= "center "> 1 </td>
<td align= "center "> 不烦 </td>
<td align= "center "> 100 </td>
<td align= "center "> <input type= "text " id= "txt1 " name= "txt1 " size= "12 " onkeypress= "checkValue(this) "> </td>
</tr>
<tr>
<td align= "center "> 2 </td>
<td align= "center "> 女的? </td>
<td align= "center "> 200 </td>
<td align= "center "> <input type= "text " id= "txt2 " name= "txt2 " size= "12 " onkeypress= "checkValue(this) "> </td>
</tr>
</table>
<script >
function checkValue(obj){
if(event.keyCode==13){
if(obj.parentNode.previousSibling.previousSibling){
var i=obj.parentNode.previousSibling.innerText;
if((obj.value-0) <(i-0)){
var s=obj.parentNode.parentNode.cloneNode(true);
s.lastChild.innerHTML= " <input type= 'text ' size= '12 ' id= 'txt99 ' onkeypress= 'checkValue(this) '> ";
document.getElementById( "tb1 ").lastChild.appendChild(s);
alert( "还差 "+((i-0)-(obj.value-0))+ "没出口 ");
document.getElementById( "txt99 ").focus();

}
}
}
}
</script>
</body>
</html>

把里面要从数据库里取出的数据替换掉
另注意:动态分配text的ID

最后:以身相许,女的?
哈哈
[解决办法]
<html>
<script>
function InsertRow(obj)
{

if(event.keyCode==13)
{
reg=/^\d*$/
if(!(reg.test(obj.value))){alert( "输入错误: "+obj.value);return;}
var v=parseInt(obj.value);
if(!isNaN(v))
{
var tdnode=obj.parentNode;
var trnode=tdnode.parentNode;
var num = getProductNum(obj.name);
if(v> num){alert( "库存不足: "+num);return;};
var trobj=trnode.parentNode.insertRow(trnode.rowIndex+1);
trobj.name=trnode.name;
for(var i=0; i < trnode.cells.length;i++)
{
var cobj=trobj.insertCell();
cobj.innerHTML=trnode.cells[i].innerHTML;
}
trobj.cells[tdnode.cellIndex].previousSibling.innerText=num-v;
trobj.cells[tdnode.cellIndex].firstChild.value= " ";
trobj.cells[tdnode.cellIndex].firstChild.focus();
}
else {alert( "输入错误: "+v);return;};
}
}

function getProductNum(name)
{
var n=-1;
var ar=document.getElementsByName(name);
if(ar.length <=0)return n;
for(var i=0;i < ar.length;i++)
{
var tn = parseInt(ar[i].parentNode.previousSibling.innerText);
if(isNaN(tn))continue;
if(n==-1)n=tn;
else n=n> tn?tn:n;
}
return n==-1?0:n;
}
</script>

<body>
<table align= "center " border=1>
<tr> <td width= "50 "> 产品 </td> <td width= "50 "> 描述 </td> <td width= "50 "> 数量 </td> <td width= "100 "> 出口数量 </td> </tr>


<tr> <td> 1 </td> <td> 烦啊 </td> <td> 100 </td> <td> <input name= "pd1 " onkeydown= "InsertRow(this) "/> </td> </tr>
<tr> <td> 2 </td> <td> 急啊 </td> <td> 100 </td> <td> <input name= "pd2 " onkeydown= "InsertRow(this) "/> </td> </tr>
</table>
</body>
</html>

读书人网 >JavaScript

热点推荐