在javascript验证方法中访问服务器端转发器控件
我有一个基于asp.net的转发器控件在javascript验证方法中访问服务器端转发器控件,javascript,asp.net,Javascript,Asp.net,我有一个基于asp.net的转发器控件 <div id="repeaterDiv"> <asp:TextBox ID ="txtAnswer" TextMode="MultiLine" Columns="50" Rows="4" runat="server" /> <asp:HiddenField ID="isHid" runat="server" Value='<%# DataBinder.Eval(Container.Dat
<div id="repeaterDiv">
<asp:TextBox ID ="txtAnswer" TextMode="MultiLine" Columns="50" Rows="4" runat="server" />
<asp:HiddenField ID="isHid" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "IsAnswerEssential") %>' />
</div>
我试图使用Javascript访问它们,以便对它们执行验证。所以我就是这样做的,这在某种程度上是好的。由于中继器控件的id问题,我正在使用getelementsbytagname进行此操作
var myTxtBoxes = document.getElementsByTagName('textarea');
var myHiddenField = document.getElementsByTagName('input');
for (var i = 0; i < myTxtBoxes.length; i++) {
alert(myTxtBoxes[i].value);
alert(myHiddenField[i].value);
}
var mytxtboxs=document.getElementsByTagName('textarea');
var myHiddenField=document.getElementsByTagName('input');
对于(var i=0;i
问题是我做上述工作的方式会拉取我页面中的所有输入,这意味着我最终会得到隐藏的东西,比如asp.net的viewstate生成器。有人知道一个干净的方法来做这件事吗。感谢您提供的任何有用信息。这是我为其他人所做的
<asp:Label ID="isHid" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "IsAnswerEssential") %>' style="display:none;" CssClass="class2" />
这是javascript
function ValidateInput() {
var cntrls2 = $('.class2')
for (var i = 0; i < cntrls1.length; i++) {
alert(cntrls2[i].getAttribute("Value"));
}
}
函数ValidateInput(){
变量cntrls2=$('.class2')
对于(var i=0;i
它解决了我最初强调的这个问题。虽然感觉一点也不好。我希望它有用。谢谢你的建议,梅森,非常感谢你抽出时间来帮助我 再次感谢梅森,我在这方面取得了更大进展。所以我使用了HTML5数据基本数据属性
<asp:TextBox ID="txtAnswer" TextMode="MultiLine" Columns="50" Rows="4" runat="server" CssClass="class1" data-essential='<%# DataBinder.Eval(Container.DataItem,
"IsAnswerEssential") %>' />
不要使用标记名,而是在您希望从JavaScript引用的元素上使用CSS类。然后使用JavaScript(最好是jQuery,这使它变得简单)检索这些元素。你会使用jQuery吗?我勉强通过jQuery,只是。我可以给asp.net隐藏域分配一个cssclass吗,你知道吗?我不这么认为。无论如何,我怀疑在这种情况下使用HiddenField是正确的。您可能会在文本框中考虑一些<代码>数据->代码>属性,例如<>代码>数据本质=“true”<代码>,您应该将其命名为比 Cult2更具描述性的东西。另外,正如我前面提到的,您应该使用data-
属性,这将消除使用虚拟标签的开销。看看他们。例如:
function ValidateInput() {
var cntrls1 = $('.class1')
for (var i = 0; i < cntrls1.length; i++) {
alert(cntrls1[i].getAttribute("data-essential"));
}
}