C# Javascript和clientId问题

C# Javascript和clientId问题,c#,javascript,asp.net,C#,Javascript,Asp.net,大家好,我有一个用户控件: <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

大家好,我有一个用户控件:

<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() = "";
    }
函数clearfield() { 调试器; $(“#”)val()=”; } 但是

$(“#”)

始终是:

$(“#内容占位符正文_日历1_日期选择器”)

这是第二个用户控件,尽管我单击了第一个控件

请协助我如何克服这一点

单击按钮可调用CLearFeild函数以清除日期选择器feild


问候您。

您需要将源对象传递给您的函数

onclick="ClearFeild(this)"

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

原因是您的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');
    }

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

感谢您提供的解决方案,但这不起作用,因为我正在尝试清除datepicker文本字段。因此,在ClearFeild方法中传递它将获得img控件的ID,而不是输入文本控件的ID。但是html控件需要有唯一的ID。好的,明白了,我更改了:prevInput=$(这个)。prev('input')改为:prevInput=$(img)。prev('input')做了一些修改,现在检查一下。我还包括了现场演示。是否可以设置prevInput的值?这与中看到的问题相同;我在那里回答了,所以不会复制/粘贴我的答案,但希望它对你有用。基本上将
onclick=“clearfield()”
更改为
onclick=“clearfield(“”)”
函数clearfield()
更改为
函数clearfield(id)
,并在函数中使用
id