为什么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 语言中的转义字符来解决.下面就来 ...
随机推荐
- 关于O(n)算法
首先要明确一点,当数据规模达到百万时需用O(n)算法 如何实现O(n)算法,其实是对原有算法的一种改进 后者说是 原有算法+一点小性质=O(n)算法 下面我将举几个例子来说明这一点: 1.后缀数组中h ...
- 【Dog】
- zabbix3.0配置邮件报警
我们部署一套监控软件,报警这一块自然不可或缺,接下来我们看看zabbix如何实现邮件报警. 1.编写发送邮件的脚本 zabbix通脚本发送邮件,遵循的传参格式为: 脚本 收件人 标题 邮件 ...
- Colour your Log4Net events in your RichTextBox zz
You’re most probably here because you have already read my article How to watch your log through you ...
- [转]NHibernate之旅(10):探索父子(一对多)关联查询
本节内容 关联查询引入 一对多关联查询 1.原生SQL关联查询 2.HQL关联查询 3.Criteria API关联查询 结语 关联查询引入 在NHibernate中提供了三种查询方式给我们选择:NH ...
- Oracle11g客户端for centos 5.5安装文档
前提:安装centos的时候,最好把系统的所有的安装包都安装上.以下命令需手动输入,不要复制粘贴. 1.以root用户登录centos5.5的操作系统:创建oracle用户组和用户. groupadd ...
- VMware设置虚拟机,并配置远程连接桌面
现在需要使用VMware虚拟出几个window7的机器,用来跑自动化测试. 在配置虚拟机的时候遇到了几个问题: 问题1:虚拟机无法与外界机器通信.(可ping通过). 问题2:外界机器无法链接虚拟机的 ...
- python 零散记录(一) input与raw_input 数学相关函数 转换字符串的方法
input()与raw_input(): 两者都是接受命令行输入,但区别在于,raw_input()接受原始数据(raw data). #使用input()来提示输入名字 input("en ...
- CUDA编程-(3)图形流水线时代
图形流水线时代 图中所说的顶点,为多边型的角.GeForce系列设计图形流水型的目的就是渲染三角形的图元,这里指三角线图元的角.三角形图元越小,图片的质量就越好. 顶点控制的作用:从CPU中,接受参数 ...
- C# 4.0 新特性
http://www.cnblogs.com/webabcd/archive/2010/05/27/1744899.html 在MVC中Controller的action方法 常用的:可选参数和参数默 ...