百分求助,关于HiddenField取值问题!在线等,调试通过结贴。

lvyou78 2009-11-20 04:13:40
遇到了这样的问题:我在datalist里放了几个HiddenField,但要读数的时候,总显示最后一条数据。生成源码,其它数据也读出来了,可在js里就是取不出来。不解,还请达人帮助。

HTML:
<div class="pro_size">
团费:<strong>1</strong>星
<ul>
<asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal" RepeatColumns="3">
<ItemTemplate>
<li><span>
<%# Eval("service_stars")%>
</span></li>
<asp:HiddenField ID="f_h1" runat="server" Value='<%# Eval("service_des") %>' />
<asp:HiddenField ID="f_h2" runat="server" Value='<%# Eval("service_pice") %>' />
</ItemTemplate>
</asp:DataList>
</ul>
</div>

JS脚本:
$(".pro_size li span").click(function(){

$("#Text1").attr("value",$(this).text()); //填充内容
$("#Text2").attr("value",$(" f_h1").val());//填充内容




})
...全文
194 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvyou78 2009-11-20
  • 打赏
  • 举报
回复
结贴了 。sundotLei 兄的解法是正确的。需要遍历。

to:LtnRain 谢谢兄台,ID是变了很多,最后我统一把ID改成生成 html后的ID了。
就是这个:ctl00_ContentPlaceHolder1_DataList1_ctl00_f_h1。

原因很简单,只是自己太大意了,数据遍历之后才能取出,原先取的都是最后一条,其它的都是无法识别。

原代如下:
var obj_this =this;
var o=obj_this.parentNode.parentNode.getElementsByTagName('input');
for(var i=0;i <o.length;i++){
if(o[i].type=="hidden"){
if(o[i].id.indexOf('Text1')!=-1)
alert('当前行的ID是'+o[i].value);
else if(o[i].id.indexOf('Text30')!=-1)
alert('当前行的Name是'+o[i].value);
}
}
蝶恋花雨 2009-11-20
  • 打赏
  • 举报
回复
JS里面应该循环赋值吧 。因为放在DATALIST里面生成多条数据。然后会生成多个不同的f_h1 ID(例如DataList1_ctl00_f_h1,DataList1_ctl01_f_h1) 因此。你直接赋给它。没有经过循环。最后只能取最后显示出的那个。不知道我说的意思你明白了没.

说的错了。楼主别怪
jshi123 2009-11-20
  • 打赏
  • 举报
回复
$("#Text2").attr("value",$("input:last", $(this).parent().parent()).val());//填充内容
草根醉秋意 2009-11-20
  • 打赏
  • 举报
回复

//放到onload里面
$(function() {
$(".pro_size li span").click(function() {
debugger;
$("#Text1").attr("value", $(this).text()); //填充内容
$("#Text2").attr("value", $("#f_h1").val()); //填充内容
})
});


如果生成的代码是下面这样的

<input type="text" id="Text1" />
<input type="text" id="Text2" />
<div id="div1">
<div class="pro_size">
<ul>
<li><span>test1 </span></li>
<li><span>test2 </span></li>
<input type="hidden" id="f_h1" value='f_h1' />
<input type="hidden" id="f_h2" value='f_h2' />
</ul>
</div>
</div>


楼主你的那个服务器端控件放在容器控件里面生成html代码的时候客户端的id会变的
$("#f_h1").val()就会取不到值
sundotLei 2009-11-20
  • 打赏
  • 举报
回复
只要数据取出来正常,就可以通过document.getElementsByTagName("input") 去遍历

var o=document.getElementsByTagName("input");
for(var i=0;i<o.length;i++){
if(o[i].type=="hidden"){

}
}
lvyou78 2009-11-20
  • 打赏
  • 举报
回复
是的,很郁闷。
草根醉秋意 2009-11-20
  • 打赏
  • 举报
回复
根据ID取还会取到最后的一个hidden的值?
草根醉秋意 2009-11-20
  • 打赏
  • 举报
回复
$("#Text2").attr("value",$("#f_h1").val());//填充内容

lvyou78 2009-11-20
  • 打赏
  • 举报
回复
值是能取到。但总是取到最后一条。无法对应相同的值。
草根醉秋意 2009-11-20
  • 打赏
  • 举报
回复
<asp:HiddenField ID="f_h1" runat="server" Value=' <%# Eval("service_des") %>' />

楼主你去看下这个生成html的时候id会变的,当然取不到值了
直接用<input type="hidden" ID="f_h1" Value=' <%# Eval("service_des") %>'/>
fuda_1985 2009-11-20
  • 打赏
  • 举报
回复
。。。是不是不该这么赋值呢。第一次赋了第一个值,第二个值立马把上一个值个替掉了吧?
lvyou78 2009-11-20
  • 打赏
  • 举报
回复
无论如何取都是最后一条数据,很不解。看原文件,数据全部取出来了。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧