2014-10-31 73 views
1

我想更新位於文本框旁邊的隱藏字段的值。原因是因爲它在.net中繼器內部,所以我無法從沒有回傳的代碼中更新它,這需要很長時間。使用jquery更新中繼器的隱藏字段值

HTML

<asp:Repeater ID="rptTranslations" runat="server" OnItemDataBound="rptTranslations_ItemDataBound"> 
        <ItemTemplate> 
         <tr id="rptRow" runat="server" class="form-line-input"> 
          <td> 
           <asp:TextBox ID="txtEnglish" runat="server" ReadOnly="true" Text="" Width="475px"></asp:TextBox></td> 
          <td> 
           <asp:HiddenField ID="hiddenRecordId" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "recordId") %>' /> 
           <asp:HiddenField ID="hiddenUpdated" runat="server" Value='false' /> 
           <asp:TextBox ID="txtLanguage" runat="server" CssClass="jq-translation" Text="" Width="475px"></asp:TextBox></td> 
         </tr> 
        </ItemTemplate> 
       </asp:Repeater> 

jQuery的 我用 '名',因爲當HTML返回到瀏覽器的名稱是 'ctl00 $ ContentPlaceHolder1 $ rptTranslations $ ctl00 $ hiddenUpdated' 和ID有額外的文本最後。

$(document).ready(function() { 
       $('.jq-translation').change(function() { 
        $(this).closest("[name$='hiddenUpdated']").val("true"); 
       }); 
      }); 

更新文本框時,隱藏字段的值不會更改。

+0

你用'id * = hiddenUpdated'試過了嗎? – 2014-10-31 16:33:21

+0

最接近DOM樹中的祖先,而不是兄弟姐妹。因此,儘量使用http://api.jquery.com/siblings/ – lshettyl 2014-10-31 16:37:23

回答

0

我曾嘗試以下可自動生成你的jQuery選擇用它代替了名的,它的工作原理。使用.prev()而不是.closest()。如果仔細觀察,則需要prev元素。

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.jq-translation').change(function() { 
      $(this).prev().val("true"); 
     }); 
    }); 
</script> 
0

檢查html源代碼中隱藏字段的名稱,或使用firbug並確保它是您在jquery選擇器中查找的名稱。

所以我建議一類添加到這個隱藏字段,因爲它會通過asp.net

+0

ClientIDMode =「Static」在中繼器上工作嗎? – Stuart 2014-10-31 16:26:15

+0

我改變了我的答案,因爲靜態ID不會在你的情況下工作 – 2014-10-31 16:31:21

0

如果你是確保「名」與「hiddenUpdated」,關於使用

$(document).ready(function() { 
    $('.jq-translation').change(function() { 
     $(this).siblings().filter("[name$='hiddenUpdated']").val("true"); 
    }); 
}); 

怎麼也結束,請參閱我的評論你的問題爲好,至於爲什麼我用兄弟姐妹()。