为什么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 语言中的转义字符来解决.下面就来 ...
随机推荐
- bzoj1486
这里学了一个新知识叫分数规划这道题目是求∑w[i]/S最小首先二分答案k,然后如果某个环∑w[i]/S<=k即∑w[i]<=k*S-->∑w[i]-k*S<=0--->∑ ...
- bzoj1263
观察可得,最大的拆分方法是尽量拆成3,特殊的,如果最后剩下了1,那么就把3+1变成2+2 然后高精度计算即可 var s2,s3,i,n,l:longint; a:..] of longint ...
- 大白书 209 remember the word
F - Remember the Word Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Sub ...
- MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验
原文地址:http://liangweilinux.blog.51cto.com/8340258/1728131 首先在此感谢下我的老师年一线实战经验,我当然不能和我的老师平起平坐,得到老师三分之一的 ...
- tomcat web容器中,调用jersey client端报错的处理
在web工程中,写main方法,运行ok. 发布到tomcat中后,报错. javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/r ...
- HTML5 Canvas核心技术—图形、动画与游戏开发.pdf8
第6章 精灵 精灵(sprite),它是一种可以集成入动画之中的图像对象,赋予它们各种行为,精灵并非Canvas API的一部分,,但都是从它衍生而来 本章将会实现三种设计模式:策略模式(精灵与绘制器 ...
- CC2530芯片介绍
CC2530,体积更小,功能全, C8051内核,使用起来跟平时的单片机没什么两样,就是程序复杂一些,需要一些时日才能看懂,吃透就更长了,而且对于CC2530TI公司提供了一套完整的解决方案,有布线图 ...
- zabbix邮件告警
Zabbix邮件告警看了很多文档,写的那叫一个蛋疼,明明没有发出去邮件,硬要糊弄观众,我也跟着被糊弄. 操作系统环境: CentOS 5.5 x84_64位 Zabbix版本2.2.3 Web服务器: ...
- 用C++的类做三种优先队列的实现
学过数据结构的都知道优先队列这种东西,普通的队列是依据入队顺序,先入队的先出队,而优先队列则是依照键值,键值越大(或越小),就越先出队. 所以,优先队列基本支持push,pop,empty,size, ...
- js发起长轮询获取推送消息
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...