为什么JS动态生成的input标签在后台有时候没法获取到
最近在做一个产品添加的功能,需求有点奇葩,所以在添加的时候免不了要用到动态生成控件,然后我就使用了JS去动态生成一些 checkbox类型的input标签,在以前用asp.net在后台生成的input标签都可以用request["name属性"]这样的方式在后台 获取,但是在获取JS生成的标签时,就会发生有时候可以获取到,有时候又获取不到,到现在才发现,原来是我的JS写法有问题,所以才导致这样的问题。之前 这样的问题也遇到过好几次,苦于没找到解决方法,之前都是换别的方法去完成的,如今再次遇到,倒也觉得还是想办法解决的好,下面贴出代码
前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<script type="text/javascript">
function InsertProduct() {
for (var i = 0; i < 5; i++) {
var tb = document.getElementById("productTable");
var refRow = tb.rows.length - 1;
var newRefRow = tb.insertRow(refRow);
var checkboxid = document.createElement("input");
checkboxid.setAttribute("type", "checkbox");
checkboxid.setAttribute("id", "checkboxid");
checkboxid.setAttribute("name", "chkallID");
checkboxid.setAttribute("value", i.toString() + "InsertProduct");
newRefRow.insertCell(0).appendChild(checkboxid);
newRefRow.insertCell(1).innerHTML = "<span class=\"color4\">" + document.getElementById("t_name").value + "</span>";
newRefRow.insertCell(2).innerHTML = document.getElementById("t_gkj").value;
newRefRow.insertCell(3).innerHTML = document.getElementById("t_sl").value;
newRefRow.insertCell(4).innerHTML = document.getElementById("t_zk").value;
newRefRow.insertCell(5).innerHTML = document.getElementById("t_zhj").value;
newRefRow.insertCell(6).innerHTML = document.getElementById("t_xj").value;
}
}
function Addrows() {
for (var i = 0; i < 5; i++) {
var tb = document.getElementById("tableadd");
var refRow = tb.rows.length - 1;
var newRefRow = tb.insertRow(refRow);
newRefRow.insertCell(0).innerHTML = "<input type=\"checkbox\" id=\"chkold\" name=\"chkold \" value=\"" + i + "addrows\" />";
newRefRow.insertCell(1).innerHTML = "<span class=\"color4\">" + document.getElementById("t_name1").value + "</span>";
newRefRow.insertCell(2).innerHTML = document.getElementById("t_gkj1").value;
newRefRow.insertCell(3).innerHTML = document.getElementById("t_sl1").value;
newRefRow.insertCell(4).innerHTML = document.getElementById("t_zk1").value;
newRefRow.insertCell(5).innerHTML = document.getElementById("t_zhj1").value;
newRefRow.insertCell(6).innerHTML = document.getElementById("t_xj1").value;
}
}
</script>
<h1>方案一</h1>
<table width="100%" id="productTable">
<tr>
<td class="title-bg">
选择
</td>
<td class="title-bg">
产品名称
</td>
<td class="title-bg">
公开价
</td>
<td class="title-bg">
数量
</td>
<td class="title-bg">
折扣(X/10)
</td>
<td class="title-bg">
折后价
</td>
<td class="title-bg">
小计
</td>
</tr>
<tr>
<td>
<a class="clickcss" onclick="InsertProduct()">添加</a>
</td>
<td>
<input type="text" id="t_name" name="" />
</td>
<td>
<input type="text" id="t_gkj" name="" value="0" />
</td>
<td>
<input type="text" id="t_sl" name="" value="0" />
</td>
<td>
<input type="text" id="t_zk" name="" value="10" />
</td>
<td>
<input type="text" id="t_zhj" name="" value="0" />
</td>
<td>
<input type="text" id="t_xj" name="" value="0" />
</td>
</tr>
</table> <asp:Button ID="Button1" runat="server" Text="接收方案一参数"
onclick="Button1_Click" /> <br />
<h1>方案二</h1>
<table width="100%" id="tableadd">
<tr>
<td class="title-bg">
选择
</td>
<td class="title-bg">
产品名称
</td>
<td class="title-bg">
公开价
</td>
<td class="title-bg">
数量
</td>
<td class="title-bg">
折扣(X/10)
</td>
<td class="title-bg">
折后价
</td>
<td class="title-bg">
小计
</td>
</tr>
<tr>
<td>
<a class="clickcss" onclick="Addrows()">添加</a>
</td>
<td>
<input type="text" id="t_name1" name="" />
</td>
<td>
<input type="text" id="t_gkj1" name="" value="0" />
</td>
<td>
<input type="text" id="t_sl1" name="" value="0" />
</td>
<td>
<input type="text" id="t_zk1" name="" value="10" />
</td>
<td>
<input type="text" id="t_zhj1" name="" value="0" />
</td>
<td>
<input type="text" id="t_xj1" name="" value="0" />
</td>
</tr>
</table>
</div>
<asp:Button ID="Button2" runat="server" Text="接收方案二参数"
onclick="Button2_Click" />
</form>
</body>
</html>
后台代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ }
/// <summary>
/// 接收方案一参数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(Request["chkallID"]) == false)
{
Response.Write(Request["chkallID"].ToString());
Response.End();
}
}
/// <summary>
/// 接收方案二参数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button2_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(Request["chkold"]) == false)
{
Response.Write(Request["chkold"].ToString());
Response.End();
}
}
}
方案一的写法,生成checkbox类型的input后,在后台可以接收到选中的checkbox的value,接收的时候会自动的在每个checkbox的value后面加上,逗号隔开,
方案二的写法,在后台是无法获取到动态生成的checkbox类型的input,并且,如果直接获取,还会发生异常。
为什么JS动态生成的input标签在后台有时候没法获取到的更多相关文章
- js动态新增组合Input标签
var x = 1; function addlink() { var linkdiv = document.getElementById("add1_0"); if (linkd ...
- js动态生成数据列表
我们通常会使用table标签来展示数据内容,由于需要展示的数据内容是随时更换的,所以不可能将展示的数据列表写死在html写死在页面中,而是需要我们根据后台传来的数据随时更换,这个时候就需要我们使用js ...
- JS动态生成表格后 合并单元格
JS动态生成表格后 合并单元格 最近做项目碰到表格中的单元格合并的问题,需求是这样的,首先发ajax请求 请求回来后的数据 动态生成表格数据,但是生成后如果编号或者(根据其他的内容)有相同时,要合并单 ...
- js动态生成canvas
最近看代码发现一个小现象,就是用js动态生成的canvas在浏览器审查元素的时候,发现它没有结束标签,但是不会影响canvas上图形的绘制,同时还有一点就是在动态设置canvas宽度和高度的时候,不要 ...
- JS动态生成的元素,其对应的方法不响应(比如单击事件,鼠标移动事件等)
主要原因:在页面给元素注册点击事件的时候[ $(function () { XXX }); ],JS动态生成的元素还尚未生成,所以click事件就没有生效 解决方法: 方案一:js动态生成元素后再给 ...
- 抓取Js动态生成数据且以滚动页面方式分页的网页
代码也可以从我的开源项目HtmlExtractor中获取. 当我们在进行数据抓取的时候,如果目标网站是以Js的方式动态生成数据且以滚动页面的方式进行分页,那么我们该如何抓取呢? 如类似今日头条这样的网 ...
- 2)JS动态生成HTML元素的爬取
2)JS动态生成HTML元素的爬取 import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.W ...
- qrcode.js 动态生成二维码
用qrcode.js动态生成二维码图片非常简单,只需要引入qrcode.js即可使用,而且可以自定义图片大小.背景色等信息. 1.jsp代码---页面头部引入qrcode.js,jquery文件可选 ...
- js 动态生成html 触发事件传参字符转义
通常,在使用 JS 动态生成 html 的过程中,会嵌入相应的样式.事件等属性元素,而这时经常会出现所谓的 “单.双引号不够用” 的情况,别急,这时可以利用 html 语言中的转义字符来解决.下面就来 ...
随机推荐
- HDOJ --- Super Jumping! Jumping! Jumping!
Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- 昂贵的聘礼--POJ1062
昂贵的聘礼 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other) Total Submiss ...
- 在Raspberry配置优化安装LNMP环境总结
在Raspberry配置优化安装LNMP环境总结 apt-get update apt-get install nginx apt-get install php5-fpm php5-cli php5 ...
- linux下在多个文件夹中查找指定字符串的命令
例如,想要在当前文件夹下的多个.c或者.txt文件中查找“shutdown”字符串, 可以使用“grep shutdown ./*.c”或“grep shutdown ./*.txt”即可 使用fin ...
- XPath在asp.net中查询XML -摘自网络
.NET Framework 2.0中可以使用System.Xml.XPath命名空间下的类对XML文档进行基于路径的查询,在查询过程中需要构造类似SQL的查询字符串,该字符串遵循XPath语法.它由 ...
- 普通用户从非80端口启动tomcat,通过端口转发监听80端口
linux下小于1024的端口都需要root去绑定. root权限启动tomcat是不明智的,可以使用非root权限启动tomcat监听8080端口,然后利用端口转发实现对80端口的监听. 端口转发: ...
- Mysql导出导入乱码问题解决
MySQL从4.1版本开始才提出字符集的概念,所以对于MySQL4.0及其以下的版本,他们的字符集都是Latin1的,所以有时候需要对mysql的字符集进行一下转换,MySQL版本的升级.降级,特别是 ...
- 解决@media screen (自适应)IE浏览器不兼容问题
1.解决兼容性问题 (1)页面最顶部必须定义:<!DOCTYPE html> (2)点击:下载 respond.js 文件 (3)引入<script src="respon ...
- PowerShell自定义对象
前面的性能高 使用[pscustomobject][ordered]强制类型转换 [pscustomobject][ordered]@{Name= 'Boe'Number = 1ID = 007} 使 ...
- 无法打开SQL Server的连接
机房收费系统重构版的登陆敲了好几天了,总算把登陆窗口敲完了,代码调试的差点儿相同了,问题就处在数据库了. SQL Server配置管理里的SQL Server服务都启动了,可是还是报这个 ...