[英]Retrieve a TextBox using JavaScript
我在文本框內的編輯模式下有一個GirdView。
我需要在JavaScript中使用ID(從瀏覽器的源代碼)檢索此TextBox。
ctl00$MainContent$uxListOptions$ctl02$uxValueInput
但是我收到一個錯誤,因為我的JavaScript無法找到TextBox。
這是代碼:
<span onclick="encodeMyHtml('<%# UniqueID.Replace("$", "_") %>_FormViewContentManager_ContentTextBox')">
<asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="[Publish]" />
</span>
在控件的OnPageLoad中,我將此稱為:
private void addEditorJavaScript()
{
// create our HTML encoder javascript function
// this way it shows up once per page that the control is on
string scr = @"<script type='text/javascript'>function encodeMyHtml(name){
var content = document.getElementById(name).value
content = content.replace(/</g,'<');
content = content.replace(/>/g,'>');
document.getElementById(name).value = content;
}</script>";
// add the javascript into the Page
ClientScriptManager cm = Page.ClientScript;
cm.RegisterClientScriptBlock(this.GetType(), "GlobalJavascript", scr);
}
我正在嘗試使用此代碼http://dustyreagan.com/how-to-submit-html-without-disabling/
知道我在做什么錯嗎? 多謝你們!
如果使用的是ASP.Net 4.0,則可以對此控件使用ClientIdMode = Static或Predictable。
您可以這樣定義網格:
<div>
<asp:GridView ID="GridView1" runat="server" Width = "550px"
AutoGenerateColumns = "false" Font-Names = "Calibri"
Font-Size = "12pt" HeaderStyle-BackColor = "LightYellow" AllowPaging ="true" ShowFooter = "true" OnPageIndexChanging = "OnPaging" PageSize = "10" >
<Columns>
<asp:TemplateField ItemStyle-Width = "100px" HeaderText = "Name">
<ItemTemplate>
<asp:TextBox ID="txtPeriod" runat="server" CssClass="css1 mycss" Text='<%# Eval("Period")%>'
onblur="SetPostingPeriod(this)"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<AlternatingRowStyle BackColor="#C2D69B" />
</asp:GridView>
</div>
您的Javascript函數將為:
<script language="javascript" type="text/javascript">
/* Populating same data to all the textboxes inside grid,
once change of text for one textbox - by using jquery
*/
function SetPostingPeriod(obj) {
var cntNbr = $("#" + obj.id).val();
// var cntNbr = document.getElementById(obj.id).value;
// alert(cntNbr);
//Access Grid element by using name selector
$("#<%=GridView1.ClientID %> input[name*='txtPeriod']").each(function (index) {
if ($.trim($(this).val()) != "")
if (!isNaN($(this).val())) {
$(this).val(cntNbr);
}
});
}
</script>
此Javascript函數稱為文本框的onblur事件。 同時調用此函數時,它傳遞的參數不過是文本框ID。
在javascript函數內部,通過使用參數(即文本框的ID),我們得到了重視。
這是代碼:
var cntNbr = $("#" + obj.id).val();
然后,對於網格中可用的每個“ txtPeriod”控件,我們需要為它們分配當前“ txtPeriod”文本框值的值。
循環網格以標識每個可用的“ txtPeriod”:這是代碼:
$("#<%=GridView1.ClientID %> input[name*='txtPeriod']").each(function (index) {
});
在此循環中,我們需要將“ txtPeriod”(當前/已修改)值分配給其他“ txtPeriod”文本框。在分配其良好做法之前,請檢查它是否為null或NAN。
這是代碼:
if ($.trim($(this).val()) != "")
if (!isNaN($(this).val())) {
$(this).val(cntNbr);
}
encodeMyHtml('<%# UniqueID.Replace("$", "_") %>_FormViewContentManager_ContentTextBox')
這將導致
encodeMyHtml('ctl00_MainContent_uxListOptions_ctl02_uxValueInput_FormViewContentManager_ContentTextBox')
您的DOM中是否存在對該ID的控件?
您似乎對如何創建ID做出了許多假設。 最好立即引用ContentTextBox.ClientID
。
如果ContentTextBox
是對文本框的有效引用,則類似於以下內容:
encodeMyHtml('<%# ContentTextBox.ClientID %>')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.