大家好,我有一个用户控件:
<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() = "";
}
但
的价值$(“#&lt;%= datepicker.ClientID%&gt;”);
总是:
$( “#ContentPlaceHolderBody_Calendar1_datepicker”);
这是第二个用户控件,即使我单击第一个控件。
请帮助我如何克服这个问题。
单击按钮时调用CLearFeild函数以清除datepicker feild。
亲切的问候。
答案 0 :(得分:1)
您需要将源对象传递给您的函数
<强> Live Demo 强>
onclick="ClearFeild(this)"
function ClearFeild(source) {
obj = $('#' + source.id)
prevInput = obj.prev('input[type=text]')
}
答案 1 :(得分: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');
}