注册 登录
编程论坛 ASP技术论坛

js前台动态添加文本框,asp接收页面怎么获取文本框内容

gesongs 发布于 2011-09-26 16:43, 5639 次点击
前台代码:
<head>
<title>无标题文档</title>
</head>
<body>
<form name="form1" method="post" action="bb.asp">
  <div id="d">
    <input type="text" name="text_0"/>
    <input type="text1" name="text_02"/>
    <input type="text2" name="text_03"/>
  </div>
  <input name="button" type="button" id="b" value="添加"/>
  <label>
  <input type="submit" name="Submit" value="提交">
  </label>
</form>
</body>
<script language="javascript">
i = 1;
document.getElementById("b").onclick=function(){
  document.getElementById("d").innerHTML+='<div id="div_'+i+'">  <input name="text" name="text_'+i+'" type="text"  />  <input name="text1" name="text_'+i+'" type="text"  />  <input name="text2" name="text_'+i+'" type="text"  />  <input type="button" value="删除"  onclick="del('+i+')"/></div>';
  i = i + 1;
}
function del(o){
    document.getElementById("d").removeChild(document.getElementById("div_"+o));
}
</script>
asp接收页面怎么获取js里的“i”值?

[ 本帖最后由 gesongs 于 2011-9-26 18:23 编辑 ]
12 回复
#2
xmlz2011-09-26 22:46
把i放在隐藏对象里传递过去:
document.getElementById("b").onclick=function(){
  document.getElementById("d").innerHTML+='<div id="div_'+i+'">  <input name="text" name="text_'+i+'" type="text"  />  <input name="text1" name="text_'+i+'" type="text"  />  <input name="text2" name="text_'+i+'" type="text"  /><input name="i" type="hidden" value='+i+' /><input type="button" value="删除"  onclick="del('+i+')"/></div>';
  i = i + 1;
}
#3
yms1232011-09-27 12:30
<head>
<title>无标题文档</title>
<script language="javascript">
function form1_Submit()
{
  document.form1.action=self.location.href;
  document.form1.submit();
}
</script>
</head>
<body>
<%
   IF Request.Form("IsSubmit")="true" Then
      Dim i,Total
      Total=Request.Form("textInp").Count
      Response.Write "共"&Total&"个文本框"
      For i=0 To Request.Form("textInp").Count
          Response.Write "第"&i&"个文本框值为"&Request.Form("textInp")(i)&"<br/>"
      Next
   End IF
%>
<form name="form1" method="post" action="bb.asp">
  <div id="d">
    <input type="text" name="textInp"/>
    <input type="text" name="textInp"/>
    <input type="text" name="textInp"/>
  </div>
  <input name="button" type="button" id="b" value="添加"/>
  <label>
  <input type="button" name="Submit" onClick="form1_Submit();" value="提交">
  <input type="hidden" name="IsSubmit" value="true" />
  </label>
</form>
</body>
</html>

[ 本帖最后由 yms123 于 2011-9-27 12:32 编辑 ]
#4
gesongs2011-09-27 20:08
谢谢版主!你的方法比较好用 但是新问题有来了

页面test1.asp :
 <td width="80%" bgcolor="#EEF7FD" class="category">
        <div id="d">
        名称:<input name="liao_hao" type="text" id="liao_hao" ondblclick="openwin()" value="双击选择料号"/>
        </div>
        <input name="button" type="button" id="b" value="添加"/>      
        <script language="javascript">
i = 1;
document.getElementById("b").onclick=function(){
  document.getElementById("d").innerHTML+='<div id="div_'+i+'">'+i+'料号:<input name="liao_hao'+i+'" type="text" ondblclick="openwin()" /><input type="button" value="删除"  onclick="del('+i+')"/></div>';
  i = i + 1;
}
function del(o){
    document.getElementById("d").removeChild(document.getElementById("div_"+o));
}
</script><script LANGUAGE="JavaScript">
function openwin() {
    window.open ("test.asp", "newwindow", "height=400, width=780, toolbar =no, menubar=no,top=180,left=190,  scrollbars=yes, resizable=no, location=no, status=no") //写成一行
   }
 </script>
          </td>
===========================================================================
菜单页面:test.asp
<table width="200" border="1">
  <tr onDblClick="ReturnValue()" >
<script language="javascript">
function ReturnValue()
{
window.opener.document.form1.liao_hao.value="123";//这里的liao_hao 如何获取test1.asp 里的liao_hao'+i+'值一一对应?
window.close();
}
</script>
    <td>123</td>
  </tr>
</table>


[ 本帖最后由 gesongs 于 2011-9-27 20:10 编辑 ]
#5
yms1232011-09-27 23:01
window.opener.document.form1.liao_hao.value="123";//这里的liao_hao 如何获取test1.asp 里的liao_hao'+i+'值一一对应?
你这里都设置了文本框照样可以获取值啊?把name属性都设置为:<input name="liao_hao"任何name属性一样的都可以自动变为数组,这个规律适用javascript和asp
<table width="200" border="1">
  <tr onDblClick="ReturnValue()" >
<script language="javascript">
function ReturnValue()
{
   var len=window.opener.document.form1.liao_hao.length;//js里取得数组大小用数组名.length
   for(var i=0;i<len;i++)
       window.opener.document.form1.liao_hao[i].value="123";//这里的liao_hao 如何获取test1.asp 里的liao_hao'+i+'值一一对应?
   window.close();
}
</script>
    <td>123</td>
  </tr>
</table>
#6
gesongs2011-09-27 23:47
版主!这段代码 好像不行!
页面test1.asp :
<td width="80%" bgcolor="#EEF7FD" class="category">
        <div id="d">
        名称:<input name="liao_hao" type="text" id="liao_hao" ondblclick="openwin()" value="双击选择料号"/>
        </div>
        <input name="button" type="button" id="b" value="添加"/>      
        <script language="javascript">
i = 1;
document.getElementById("b").onclick=function(){
  document.getElementById("d").innerHTML+='<div id="div_'+i+'">'+i+'料号:<input name="liao_hao'+i+'" type="text" ondblclick="openwin()" /><input type="button" value="删除"  onclick="del('+i+')"/></div>';
  i = i + 1;
}
function del(o){
    document.getElementById("d").removeChild(document.getElementById("div_"+o));
}
</script><script LANGUAGE="JavaScript">
function openwin() {
    window.open ("test.asp", "newwindow", "height=400, width=780, toolbar =no, menubar=no,top=180,left=190,  scrollbars=yes, resizable=no, location=no, status=no") //写成一行
   }
</script>
 </td>

下述代码的值传送到 <input name="liao_hao'+i+'" type="text" ondblclick="openwin()" />里
的值都是一样的,希望是<input name=liao_hao1;<input name=liao_hao2;<input name=liao_hao3....各自获取各自的值!

菜单页面:test.asp

<table width="200" border="1">
  <tr onDblClick="ReturnValue()" >
<script language="javascript">
function ReturnValue()
{
   var len=window.opener.document.form1.liao_hao.length;//js里取得数组大小用数组名.length\  
 for(var i=0;i<len;i++)
       window.opener.document.form1.liao_hao[i].value="123";//这里的liao_hao 如何获取test1.asp 里的liao_hao'+i+'值一一对应?
   window.close();
}
</script>
    <td>123</td>
  </tr>
</table>


[ 本帖最后由 gesongs 于 2011-9-28 08:14 编辑 ]
#7
dzt00012011-09-28 09:47
到底是要什么效果?我没明白,似乎版主也没明白

是不是要这样的? --双击料号的文本框,弹出窗口选择一个料号,把选择的料号填入双击的那个文本框中。
 
#8
gesongs2011-09-28 10:19
是的!但是效果是 能添加多个 文本框  然后  选择的料号 能对应上 各自的文本框
只有本站会员才能查看附件,请 登录
#9
dzt00012011-09-28 12:47
test1.asp
打开新窗口时URL加一个参数,用于指定文本框
补充一点,FF下添加一行时,input的值会还原(这里就是清空),是由于innerHTML引起的

 
程序代码:
<div id="d">
        名称:<input name="liao_hao" type="text" id="liao_hao" ondblclick="openwin(this)" value="双击选择料号"/>
        </div>
        <input name="button" type="button" id="b" value="添加"/>      
        <script language="javascript">
i = 1;
document.getElementById("b").onclick=function(){
alert(document.getElementById("d").innerHTML)
  document.getElementById("d").innerHTML+='<div id="div_'+i+'">'+i+'料号:<input name="liao_hao" id="liao_hao'+i+'" type="text" ondblclick="openwin(this)" /><input type="button" value="删除"  onclick="del('+i+')"/></div>';
  i = i + 1;
}
function del(o){
    document.getElementById("d").removeChild(document.getElementById("div_"+o));
}
</script><script LANGUAGE="JavaScript">
function openwin(obj) {
    window.open ("test.asp?liaohao_id="+obj.id+"", "newwindow", "height=400, width=780, toolbar =no, menubar=no,top=180,left=190,  scrollbars=yes, resizable=no, location=no, status=no") //写成一行
   }
</script>

 

test.asp
程序代码:
<table width="200" border="1">
  <tr onDblClick="ReturnValue('0001')" >
    <td>0001</td>
  </tr>
  <tr onDblClick="ReturnValue('0002')" >
    <td>0002</td>
  </tr>
  <tr onDblClick="ReturnValue('0003')" >
    <td>0003</td>
  </tr>
</table>

<script language="javascript">
function ReturnValue(liaohao_value)
{
liaohao_id
="<%=Request.QueryString("liaohao_id")%>";
window.opener.document.getElementById(liaohao_id).value
=liaohao_value;
window.close();
}
</script>


[ 本帖最后由 dzt0001 于 2011-9-28 12:50 编辑 ]
#10
gesongs2011-09-28 14:05
dzt0001 谢谢你!搞定!
js的知识面太窄 openwin(this)  openwin(obj) 没搞懂 不知道彼此什么关系!
#11
dzt00012011-09-28 14:44
openwin(obj)---obj是openwin的一个参数名称,可以用其他字符来写,如a,b,str,...都可以,只要符合变量的命名方式
openwin(this)---这里是调用函数,this是参数的值,获取到的是双击的这个文本框
函数里用到obj.id就是这个文本框的id值
#12
gesongs2011-09-28 21:09
dzt0001  谢谢你的 详解 !幸苦了  向你大无私精神 致敬!
但是 小弟笨鸟 写了一段 js 的检验 是否为 空的 代码 单不知错在哪
还请 指教   
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="1" class="toptable grid">

      <form action="" method="post" name="form1">
      <tr>
        <td width="20%" height="30" align="right" bgcolor="#EEF7FD">选择:</td>
        <td width="80%" bgcolor="#EEF7FD" class="category">
<div id="d">料号:
  <input name="liao_hao0" type="text" id="liao_hao" ondblclick="openwin(this)" style="width:120px" value="双击选择料号"/>
  数量
  :  <input name="dan_jia" id="dan_jia" type="text" style="width:60px" ondblclick="openwin(this)"  />
        </div>
        <input name="button" type="button" id="b" value="添加"/>      
 <script language="javascript">
i = 1;
document.getElementById("b").onclick=function(){
  document.getElementById("d").innerHTML+='<div id="div_'+i+'">料号: <input name="liao_hao'+i+'" id="liao_hao_'+i+'" type="text" style="width:120px"  ondblclick="openwin(this)" value="双击选择料号"  /> 数量 : <input name="dan_jia'+i+'" id="dan_jia_'+i+'" type="text" style="width:60px"/><input type="button" value="删除"  onclick="del('+i+')"/></div>';
  i = i + 1;

}
//===================================================================
//下面是 写的 检查 料号不能为空的 功能但是不成功  还请 指教!
function on_up()
{
    for (j=0;j<i;j++)
    {
          var liao_hao="liao_hao"+j
          if (document.form1.liao_hao.value="双击选择料号")
               {
                 alert("料号不能为空");   
                return  false;   
                }
     }
}
//=========================================================================
function del(o){
    document.getElementById("d").removeChild(document.getElementById("div_"+o));
  document.form1.max_mumber.value=i-1
}
       </script>
<script LANGUAGE="JavaScript">
function openwin(obj) {
    window.open ("add_list.asp?liaohao_id="+obj.id+"", "newwindow", "height=400, width=780, toolbar =no, menubar=no,top=180,left=190,  scrollbars=yes, resizable=no, location=no, status=no") //写成一行
   }
</script>
</td>
      </tr>
      
      <tr>
        <td height="30" colspan="2" align="center" bgcolor="#EEF7FD"><label></label>
          <input name="submit" type = "submit" class="button" id="up" onclick="return on_up();;" value = "提交"/>  </td>
      </tr>
      </form>
</table>
#13
dzt00012011-09-29 10:38
代码已调整。表单元素的料号、数量控件的name值设置成一样的了,id值仍带编号
on_up函数也改了,自己看不解释,如果看不明白,请去补一下JS基础,这个对你有好处
程序代码:
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="1" class="toptable grid">

      <form action="" method="post" name="form1">
      <tr>
        <td width="20%" height="30" align="right" bgcolor="#EEF7FD">选择:</td>
        <td width="80%" bgcolor="#EEF7FD" class="category">
<div id="d">料号:
  <input name="liao_hao" type="text" id="liao_hao0" ondblclick="openwin(this)" style="width:120px" value="双击选择料号"/>
  数量
  :  <input name="dan_jia0" id="dan_jia" type="text" style="width:60px" ondblclick="openwin(this)"  />
        </div>
        <input name="button" type="button" id="b" value="添加"/>     
</td>
      </tr>
     
      <tr>
        <td height="30" colspan="2" align="center" bgcolor="#EEF7FD"><label></label>
          <input name="submit" type = "submit" class="button" id="up" onclick="return on_up();;" value = "提交"/>  </td>
      </tr>
      </form>
</table>

<script language="javascript">
i = 1;
document.getElementById("b").onclick=function(){
  document.getElementById("d").innerHTML+='<div id="div_'+i+'">料号: <input name="liao_hao" id="liao_hao'+i+'" type="text" style="width:120px"  ondblclick="openwin(this)" value="双击选择料号"  /> 数量 : <input name="dan_jia" id="dan_jia_'+i+'" type="text" style="width:60px"/><input type="button" value="删除"  onclick="del('+i+')"/></div>';
  i = i + 1;

}
//===================================================================
//下面是 写的 检查 料号不能为空的 功能但是不成功  还请 指教!
function on_up()
{
    var liao_hao=document.getElementsByName("liao_hao");
    //获取所有name="liao_hao"的元素
    for (var i=0; i<liao_hao.length; i++){
        if (liao_hao[i].value=="双击选择料号" || liao_hao[i].value=="")
        {
            alert(""+(i+1)+"行 料号不能为空");    //这里的行是顺序行,不是id值
            return  false;  
        }
    }
}
//=========================================================================
function del(o){
    document.getElementById("d").removeChild(document.getElementById("div_"+o));
  document.form1.max_mumber.value=i-1
}
       </script>
<script LANGUAGE="JavaScript">
function openwin(obj) {
    window.open ("add_list.asp?liaohao_id="+obj.id+"", "newwindow", "height=400, width=780, toolbar =no, menubar=no,top=180,left=190,  scrollbars=yes, resizable=no, location=no, status=no") //写成一行
   }
</script>
1