2012-11-16 35 views
0

嗨,大家好我有一個用戶控制:Javascript和的clientId問題

<input type="text" id="datepicker" runat="server" readonly="readonly" /> 
<img src="../images/remove.png" id="test" onclick="ClearFeild()" runat="server" /> 

我的aspx頁面看起來是這樣的:

<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolderBody" runat="server"> 

    <uc:Calendar ID="calSample" runat="server" ChangeMonth="false" ChangeYear="false" 
     DateFormat="dd-M-yy" TextBoxWidth="75px" Enabled="true" /> 
    <uc:Calendar ID="Calendar1" runat="server" ChangeMonth="false" ChangeYear="false" 
     DateFormat="dd-M-yy" TextBoxWidth="75px" Enabled="true" /> 
</asp:Content> 

而且用戶控件我有一個被調用的JavaScript函數在IMG的onclick:

function ClearFeild() 
    {  
     debugger; 
     $("#<%=datepicker.ClientID %>").val() = ""; 
    } 

價值

$(「#<%= datepicker.ClientID%>」);

永遠是:

$( 「#ContentPlaceHolderBody_Calendar1_datepicker」);

這是第二個用戶控件,即使我點擊第一個控件。

如何協助我如何過來這個。

CLearFeild函數在點擊按鈕時調用,以清除日期選擇器字段。

親切的問候。

+0

這是因爲出現在[這個問題]同樣的問題(http://stackoverflow.com/questions/12512440/X-的clientid-在重複的用戶 - 控制 - 返回-錯誤值);我在那裏回答,因此不會複製/粘貼我的答案,但希望它對您有用。基本上改變''onclick =「ClearFeild()」''onclick =「ClearFeild('<%= datepicker.ClientID%>')」'和'功能ClearFeild()'功能ClearFeild(id)'並使用' ID「的功能。 – Rawling

回答

1

您需要將源對象傳遞給你的函數

Live Demo

onclick="ClearFeild(this)" 

function ClearFeild(source) {   
    obj = $('#' + source.id) 
    prevInput = obj.prev('input[type=text]') 
}​ 
+0

感謝您的解決方案,但不會工作,因爲我試圖清除datepicker文本字段。所以將它傳遞給ClearFeild方法將獲得img控件的ID而不是輸入文本控件。 – johnnie

+0

更新我的答案以訪問以前的輸入字段。不過,您需要具有唯一的HTML控件。 – Adil

+0

獲得的不確定 – johnnie

0

的原因是你的JS調用將達到可用的最近的JavaScript方法。

由於在用戶控制中,它可能會被渲染兩次。所以你正在接近更接近的第二種方法。

渲染輸出將看起來像

function ClearField(){$("#ContentPlaceHolderBody_calSample_datepicker")} 
function ClearField(){$("#ContentPlaceHolderBody_Calendar1_datepicker")} 

你的HTML輸出這裏

嘗試通過參考圖像與關鍵字然後找到具有類輸入文本框

<input type="text" class="datepicker-box" id="datepicker" runat="server" readonly="readonly" /> 
<img src="../images/remove.png" id="test" 
     onclick="ClearFeild(this)" runat="server" /> 


function ClearFeild(img) 
    {  

     var dateTextBox= $(img).closest('input.datepicker-box'); 
    }