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>

在用户控件上,我有一个在 img onclick 上调用的 javascript 函数:

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

但价值

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

总是 :

$("#ContentPlaceHolderBody_Calendar1_datepicker");

这是第二个用户控件,即使我单击第一个控件。

请协助我如何克服这个问题。

CLearFeild 函数在单击按钮以清除 datepicker 字段时被调用。

亲切的问候。

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 方法。

由于它在用户控制之下,它可能会被渲染两次。所以你正在接近第二种方法。

渲染输出看起来像

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