내 textbox onchange 이벤트에 jquery 함수가 있습니다. 트리거 때, 나는 리피터에 의해 표시되는 데이터 테이블의 값으로 텍스트 상자에 사용자가 입력 한 값의 유효성을 검사하려고합니다. 난 텍스트 상자의 가치를 얻을 수 있지만 내 문제는 내가 리피터 (QTY 열) 값을 얻을 수 없습니다. 나는 행의 id에 대해 itemindex를 두어 오른쪽 행을 식별하고 qty 열의 값을 얻습니다. 디버깅 모드에서 내가 사용하는 변수는 알 수 없으므로 아무 값도 얻지 못합니다. 제발 도와 줘, 내가 너무 오랫동안 고심하고있어.jquery를 사용하여 Repeater에서 행 값을 가져 오거나 액세스하는 방법은 무엇입니까?
HTML
<asp:Repeater ID="rptInStock" runat="server">
<ItemTemplate>
<div id="ucprodres-in-stock<%# Container.ItemIndex%>>" class="ucprodres-in-stock">
<div class="ucprodres-stock manufacturer">
<%# CType(Container.DataItem, System.Data.DataRowView).Item("Mfg").ToString%>
</div>
<div id="instock-qtyavail" class="ucprodres-stock qty-avail">
<%# CType(Container.DataItem, System.Data.DataRowView).Item("Qty").ToString%>
</div>
<div class="ucprodres-stock availability">
<%# CType(Container.DataItem, System.Data.DataRowView).Item("Availability").ToString%>
</div>
<div class="ucprodres-stock unit-price">
<%# CType(Container.DataItem, System.Data.DataRowView).Item("QtyRange").ToString%>
</div>
<div class="ucprodres-stock dollar">
<%# CType(Container.DataItem, System.Data.DataRowView).Item("QtyRangePrice").ToString%>
</div>
<div class="ucprodres-stock qty-required instock-qtyreqd">
<asp:TextBox ID="tbxInStock" runat="server"></asp:TextBox>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
JQuery와 : (? + itemIndex라는이 또한 작동하지 않는, 내가 어떻게 내 ID를 고유하게 만들기 위해 container.itemIndex을 사용하기 때문에 내가 ID에 인덱스를 추가 할)
function ValidateQty1(txtBox) {
var qtyreqd = txtBox.value;
var instockrow = document.getElementById("ucprodres-in-stock" + itemIndex);
var qtyavail = instockrow.childNodes[1].nodeValue;
if (qtyreqd > qtyavail) {
alert("The required quantity should not be greater than the available quantity");
}
샘플은 다음 HTML
<div id="ucprodres-in-stock">
<div id="ucprodres-in-stock0>" class="ucprodres-in-stock">
<div class="ucprodres-stock manufacturer">
FAIRCHILD SEMICONDUCTOR C
</div>
<div id="instock-qtyavail" class="ucprodres-stock qty-avail">
2
</div>
<div class="ucprodres-stock availability">
In Stock
</div>
<div class="ucprodres-stock unit-price">
</div>
<div class="ucprodres-stock dollar">
</div>
<div class="ucprodres-stock qty-required instock-qtyreqd">
<input name="MasterBasic$MasterPageContent$ucProductHeader$ucProductResults$rptInStock$ctl00$tbxInStock" type="text" id="MasterPageContent_ucProductHeader_ucProductResults_rptInStock_tbxInStock_0" onchange="ValidateQty1(this);" onkeypress="return validate(event);" />
</div>
</div>
<div id="ucprodres-in-stock1>" class="ucprodres-in-stock">
<div class="ucprodres-stock manufacturer">
Fairchild Semiconductor Corp
</div>
<div id="instock-qtyavail" class="ucprodres-stock qty-avail">
6
</div>
<div class="ucprodres-stock availability">
In Stock
</div>
<div class="ucprodres-stock unit-price">
</div>
<div class="ucprodres-stock dollar">
</div>
<div class="ucprodres-stock qty-required instock-qtyreqd">
<input name="MasterBasic$MasterPageContent$ucProductHeader$ucProductResults$rptInStock$ctl01$tbxInStock" type="text" id="MasterPageContent_ucProductHeader_ucProductResults_rptInStock_tbxInStock_1" onchange="ValidateQty1(this);" onkeypress="return validate(event);" />
</div>
</div>
생성 더 나은 내 시나리오를 이해하는 샘플 출력입니다 : onchange를 트리거 할 때, 나는 txtbox가 변경된 qty-avail의 가치를 원합니다.
업데이트합니다 JQuery와 기능 :
function ValidateQty1(txtBox) {
var qtyreqd = txtBox.value;
var qtyavail = $(this).parent().siblings(".qty-avail").text().trim();
alert(qtyavail);
}
HTML : 선택하려는 된 div의
<asp:Repeater ID="rptInStock" runat="server">
<ItemTemplate>
<div id="ucprodres-in-stock<%# Container.ItemIndex%>" class="ucprodres-in-stock">
<div class="ucprodres-stock manufacturer">
<%# CType(Container.DataItem, System.Data.DataRowView).Item("Mfg").ToString%>
</div>
<div id="instock-qtyavail" class="ucprodres-stock qty-avail">
<%# CType(Container.DataItem, System.Data.DataRowView).Item("Qty").ToString%>
</div>
<div class="ucprodres-stock availability">
<%# CType(Container.DataItem, System.Data.DataRowView).Item("Availability").ToString%>
</div>
<div class="ucprodres-stock unit-price">
<%# CType(Container.DataItem, System.Data.DataRowView).Item("QtyRange").ToString%>
</div>
<div class="ucprodres-stock dollar">
<%# CType(Container.DataItem, System.Data.DataRowView).Item("QtyRangePrice").ToString%>
</div>
<div class="ucprodres-stock qty-required instock-qtyreqd">
<input type="text" onkeypress="return validate(event);" onchange="ValidateQty1(this);" />
<%--<asp:TextBox ID="tbxInStock" runat="server"></asp:TextBox>--%>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
업데이트 된 피들을 확인하십시오. http://jsfiddle.net/X5Q4H/2/ – Dalorzo