Javascript动态添加文本输入框在后台无法取值问题的解决

近期在写一个信息采集系统,需要根据输入的数量动态添加文本输入框,并在后台处理输入值并存入数据库。编程环境:VisualStudio2010,ASP.NET MVC 2.0。

考虑在前台使用JavaScript实现动态添加文本输入框,如下代码所示,使用getElementById().value属性获取一个输入框的值,根据这个值循环利用getElementById().innerHTML属性输出指定的<input/>标签内容。

添加文本输入框倒是很顺利,但是在后台利用 Requset.Form(“”)无法获取值。在网上查阅了很多资料,发现这是个普遍问题,也一一做了尝试。

1)向<input/>标签内容添加"runat = server”属性。

结果无效,还容易因为<input/>标签中属性间的空格问题造成服务器解析失败。

2)放弃使用getElementById(),改用appendChild()。

结果无效,两个函数的效果是一样的,个人觉得getElementById()函数在控制输出HTML标签内容方面要方便些。

3)使用隐藏域。这个方法我不喜欢,会多出很多<input/>标签,尽管不被显示,但是心理比较抗拒,属于无奈妥协的方法。

最后,经过多次尝试,在比较偶然的情况下发现了问题的真正原因:toString()函数需要指定数字进制作为参数!!

一般来讲,动态添加的文本输入框是属于一个系列,在命名时多会利用循环变量i来命名。比如输入10,产生10个输入框用于输入学生姓名,这10个动态添加的输入框我就命名为:"Sname"+i.toString()。在后台同样利用Request.Form["SName"+i.ToString()]来取值。问题的关键在于,不用于C#等语言的使用方法,在JavaScript中,需要给toString()函数指定字符串转换时使用的数字进制,将一个10进制的变量i转换为字符串,应该使用i.toString(10)。如果参数为空,转换出来的是什么我不知道,但肯定不是10进制的数字字符。

所以,以后在JavaScript中使用toString()函数,一定要注意指定数字进制!!

前台动态添加文本输入框的JavaScript代码,需要指定数字进制:

后台取值的ASP.NET(C#)代码,不用指定数字进制:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值