0

こんにちはみんな私はユーザーコントロールを持っています:

<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>

そして、ユーザーコントロールには、imgonclickで呼び出されるjavascript関数があります。

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

しかし、

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

いつも :

$( "#ContentPlaceHolderBody_Calendar1_datepicker");

最初のコントロールをクリックしても、これは2番目のユーザーコントロールです。

私がこれをどのように克服できるかについて助けてください。

CLearFeild関数は、ボタンをクリックすると呼び出され、日付ピッカーフィールドをクリアします。

敬具。

4

2 に答える 2

1

ソースオブジェクトを関数に渡す必要があります

ライブデモ

onclick="ClearFeild(this)"

function ClearFeild(source) {        
    obj = $('#' + source.id)
    prevInput = obj.prev('input[type=text]')
}​
于 2012-11-16T09:20:11.570 に答える
0

その理由は、js 呼び出しが利用可能な最も近い JavaScript メソッドに到達するためです。

これはユーザー制御であるため、2 回レンダリングされる可能性があります。したがって、より近い2番目の方法に到達しています。

レンダリングされた出力は次のようになります

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');
    }
于 2012-11-16T09:24:35.317 に答える