asp.net js点击按钮自动加一行
asp.net前台页面:<inputid="_changdi"runat="server"type="text"/><inputid="_time"runat="serv...
asp.net 前台页面:
<input id="_changdi" runat="server" type="text" />
<input id="_time" runat="server" type="text" />
<input id="btnAdd" type="button" value="" onclick="add()" />
<script type="text/javascript">
function add() {
var tt = "<div class=\"sss\">" +
"<input id='_changdi' runat='server' />" +
"<input id='_time' runat='server' />" +
"<input class='_jine' type='text' disabled='disabled' >" +
"<input type='button' class='b_del' onclick='del(this)' />" +
"</div>";
$("#content").append(tt);
}
</script>
新加的id跟默认的id是一样,就会报错。如何让新加一行的id变成"_changdi1" ,再加一行变成"_changdi2"
.net 后台该怎么接收呢?
加了runat=server ,拼接问题 展开
<input id="_changdi" runat="server" type="text" />
<input id="_time" runat="server" type="text" />
<input id="btnAdd" type="button" value="" onclick="add()" />
<script type="text/javascript">
function add() {
var tt = "<div class=\"sss\">" +
"<input id='_changdi' runat='server' />" +
"<input id='_time' runat='server' />" +
"<input class='_jine' type='text' disabled='disabled' >" +
"<input type='button' class='b_del' onclick='del(this)' />" +
"</div>";
$("#content").append(tt);
}
</script>
新加的id跟默认的id是一样,就会报错。如何让新加一行的id变成"_changdi1" ,再加一行变成"_changdi2"
.net 后台该怎么接收呢?
加了runat=server ,拼接问题 展开
1个回答
2015-09-07
展开全部
基于你的代码,先说前端部分,想要id里面带有数字变量,需要你在js函数外面定义一个计数器,在函数里面递增(或者根据DOM元素动态计算)。
后端部分,可以遍历Request.Form键值(动态添加的这些行要包裹在一个form里面)以获取页面输入值。
代码类似于:
<script type="text/javascript">
var lineCount = 1;
function add() {
var tt = "<div class=\"sss\">" +
"<input id='_changdi" + lineCount + "' runat='server' />" +
"<input id='_time" + lineCount + "' runat='server' />" +
"<input class='_jine' type='text' disabled='disabled' >" +
"<input type='button' class='b_del' onclick='del(this)' />" +
"</div>";
$("#content").append(tt);
lineCount++;
}
</script>
--------------------------
取值类似于:
for(int i = 0; i < Request.Form.AllKeys.Length; i++)
{
if(Request.Form.AllKeys[i].StartsWith("_changdi"))
{
// xx = Request.Form[Request.Form.AllKeys[i]];
}
else if(Request.Form.AllKeys[i].StartsWith("_time"))
{
// yy = Request.Form[Request.Form.AllKeys[i]];
}
}
后端部分,可以遍历Request.Form键值(动态添加的这些行要包裹在一个form里面)以获取页面输入值。
代码类似于:
<script type="text/javascript">
var lineCount = 1;
function add() {
var tt = "<div class=\"sss\">" +
"<input id='_changdi" + lineCount + "' runat='server' />" +
"<input id='_time" + lineCount + "' runat='server' />" +
"<input class='_jine' type='text' disabled='disabled' >" +
"<input type='button' class='b_del' onclick='del(this)' />" +
"</div>";
$("#content").append(tt);
lineCount++;
}
</script>
--------------------------
取值类似于:
for(int i = 0; i < Request.Form.AllKeys.Length; i++)
{
if(Request.Form.AllKeys[i].StartsWith("_changdi"))
{
// xx = Request.Form[Request.Form.AllKeys[i]];
}
else if(Request.Form.AllKeys[i].StartsWith("_time"))
{
// yy = Request.Form[Request.Form.AllKeys[i]];
}
}
追问
用jquery ajax怎么提交呢? 因为一用button页面就刷新了。后面添加的行的数据就没有了。
追答
因为是前端动态添加的数据,所以页面刷新之后就没有了,如果要显示有两个办法:
在页面再次加载时将数据从后台取出,展示在前端(后台处理,建议你把一行封装为一个自定义控件);
就是你说的ajax方式提交数据,那样你要自己写button的提交事件,并且要屏蔽掉按钮的自动提交事件(return false)。代码类似于:
$("#buttonID").unbind("click").click(function () {
$.post("post_url", $("#formID").serialize(), function(savingResult) {
// ....保存成功/失败的前端处理
}, "json");
return false;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询