2014-05-15 44 views
1

我有我的文本框onchange事件的jquery函數。當觸發器,我想驗證由用戶輸入的值在文本框中的值由中繼器顯示的數據表。我能夠得到的文本框的價值,但我的問題是我不能得到中繼器的價值(數量列)。我爲該行的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改變的地方獲得價值。

enter image description here

更新: jQuery函數:

function ValidateQty1(txtBox) { 
    var qtyreqd = txtBox.value; 
    var qtyavail = $(this).parent().siblings(".qty-avail").text().trim(); 
    alert(qtyavail); 
} 

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"> 
         <input type="text" onkeypress="return validate(event);" onchange="ValidateQty1(this);" /> 
         <%--<asp:TextBox ID="tbxInStock" runat="server"></asp:TextBox>--%> 
        </div> 
       </div> 
      </ItemTemplate> 
     </asp:Repeater> 
+0

檢查更新的小提琴http://jsfiddle.net/X5Q4H/2/ – Dalorzo

回答

0

您可以使用nth-of-type與jQuery來查找索引項,類似於:

<script> 
var foundEl = $("#ucprodres-in-stock > div:nth-of-type(2)"); 
</script> 

這裏是鏈接到文件:

http://api.jquery.com/nth-of-type-selector/

例如:

<form> 
<fieldset> 
    <section id="demo"> 
      <!-- some code--> 
    </section> 
    <section id="test"> 
      <!-- some code--> 
    </section> 
    <section id="hello"> 
      <!-- some code--> 
    </section> 
    </fieldset> 
</form> 

這將打印「測試」的控制檯:

var el =$("form>fieldset>section:nth-child(2)"); 
console.log(el.attr("id")); 

更新1:

根據您的怨恨更新這裏是我會怎麼做,我會尋找與類.qty-avail父兄弟,是這樣的:

$("input").on('change',function(){ 
    var t = $(this).parent().siblings(".qty-avail").text().trim(); 
    alert(t); 
}); 

http://jsfiddle.net/X5Q4H/1 或 ,因爲它是你的代碼示例:

http://jsfiddle.net/X5Q4H/2/

+0

howabout後綴?我是否還需要將其附加到ID ucprodres-in-stock?我把一個後綴來標識每一行?我不需要它了嗎? – sd4ksb

+0

與nth-type-type不需要修補div來找到它們 – Dalorzo

+0

它的工作,但即使沒有後綴即時獲取整個表值。我需要通過使用txtbox的屬性來識別行,如果我可以獲取索引,以便我可以將其附加到行div id。 – sd4ksb

2

你要選擇的div的ID用在流氓>字符他們。

id="ucprodres-in-stock0>" 

此外,你在這裏是純粹的JavaScript。沒有jQuery的用法。