最近在做一个产品添加的功能,需求有点奇葩,所以在添加的时候免不了要用到动态生成控件,然后我就使用了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标签在后台有时候没法获取到的更多相关文章

  1. js动态新增组合Input标签

    var x = 1; function addlink() { var linkdiv = document.getElementById("add1_0"); if (linkd ...

  2. js动态生成数据列表

    我们通常会使用table标签来展示数据内容,由于需要展示的数据内容是随时更换的,所以不可能将展示的数据列表写死在html写死在页面中,而是需要我们根据后台传来的数据随时更换,这个时候就需要我们使用js ...

  3. JS动态生成表格后 合并单元格

    JS动态生成表格后 合并单元格 最近做项目碰到表格中的单元格合并的问题,需求是这样的,首先发ajax请求 请求回来后的数据 动态生成表格数据,但是生成后如果编号或者(根据其他的内容)有相同时,要合并单 ...

  4. js动态生成canvas

    最近看代码发现一个小现象,就是用js动态生成的canvas在浏览器审查元素的时候,发现它没有结束标签,但是不会影响canvas上图形的绘制,同时还有一点就是在动态设置canvas宽度和高度的时候,不要 ...

  5. JS动态生成的元素,其对应的方法不响应(比如单击事件,鼠标移动事件等)

    主要原因:在页面给元素注册点击事件的时候[ $(function () {  XXX }); ],JS动态生成的元素还尚未生成,所以click事件就没有生效 解决方法: 方案一:js动态生成元素后再给 ...

  6. 抓取Js动态生成数据且以滚动页面方式分页的网页

    代码也可以从我的开源项目HtmlExtractor中获取. 当我们在进行数据抓取的时候,如果目标网站是以Js的方式动态生成数据且以滚动页面的方式进行分页,那么我们该如何抓取呢? 如类似今日头条这样的网 ...

  7. 2)JS动态生成HTML元素的爬取

    2)JS动态生成HTML元素的爬取 import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.W ...

  8. qrcode.js 动态生成二维码

    用qrcode.js动态生成二维码图片非常简单,只需要引入qrcode.js即可使用,而且可以自定义图片大小.背景色等信息. 1.jsp代码---页面头部引入qrcode.js,jquery文件可选 ...

  9. js 动态生成html 触发事件传参字符转义

    通常,在使用 JS 动态生成 html 的过程中,会嵌入相应的样式.事件等属性元素,而这时经常会出现所谓的 “单.双引号不够用” 的情况,别急,这时可以利用 html 语言中的转义字符来解决.下面就来 ...

随机推荐

  1. SPOJ_10628_Count_on_a_Tree_(主席树+Tarjan)

    描述 http://www.spoj.com/problems/COT/ 给出一棵n个节点的树,树上每一个节点有权值.m次询问,求书上u,v路径中第k小的权值. COT - Count on a tr ...

  2. 关于O(n)算法

    首先要明确一点,当数据规模达到百万时需用O(n)算法 如何实现O(n)算法,其实是对原有算法的一种改进 后者说是 原有算法+一点小性质=O(n)算法 下面我将举几个例子来说明这一点: 1.后缀数组中h ...

  3. Node.js权威指南 (13) - 数据库访问

    13.1 在MongoDB数据库中存取数据 / 360 13.1.1 MongoDB概述 / 360 13.1.2 安装MongoDB数据库 / 360 13.1.3 安装MongoDB包 / 361 ...

  4. team geek

    1. 转载自http://book.douban.com/review/6007037/,版权归丸子(^.^)v所有. New Google employees (we call “Nooglers” ...

  5. ARM学习笔记1——Arm寄存器与模式的关系

    ARM微处理器上有37个32位的寄存器,其中有6个状态寄存器(一个CPSR,5个SPSR),其它31个为通用寄存器.在ARM的不同模式下,可以访问的物理寄存器是不同,如下图所示: 从图中可知,用户模式 ...

  6. CLR Profiler 性能分析工具 (转)

    原文地址:http://www.cnblogs.com/kevinlzf/archive/2010/11/12/1876066.html 下载地址:http://www.microsoft.com/e ...

  7. jQuery技术内幕预览版.pdf1

    第一章 总体构架 jQuery模块可以分为3部分:入口模块.底层支持模块和功能模块 浏览器功能测试模块提供了针对不同浏览器功能和bug的测试结果,其它模块基于测试结果解决浏览器之间的兼容性问题 回调函 ...

  8. HW4.18

    public class Solution { public static void main(String[] args) { System.out.println("Graph 1&qu ...

  9. Objective-C categories in static library

    ASK: Can you guide me how to properly link static library to iphone project. I use staic library pro ...

  10. linux btp 服务器 端及客户端配置

    Server端/etc/ntp.conf