通过参数将asp.net控件id传递给jquery函数

时间:2016-09-16 16:22:11

标签: javascript c# jquery asp.net

如何将asp.net控件id动态传递给jquery函数参数? 这是我试图这样做的方式

SelectedDivAnimation('#'+<%=txtFirstName.ClientID%>);
SelectedDivAnimation('#'+<%=txtLastName.ClientID%>);

 function SelectedDivAnimation(aspControl) {
        $(controlid).on('focus', function () {
            $(this).css({'width':'100%','transition':'1s'});
        });
        $(controlid).on('focusout', function () {
            $(this).css({ 'width': '50%', 'transition': '1s' });
        });
    }

我甚至试试这个

SelectedDivAnimation('#<%=txtFirstName.ClientID%>');
SelectedDivAnimation('#<%=txtLastName.ClientID%>');

当我运行它时,它没有按预期工作,没有任何反应。

1 个答案:

答案 0 :(得分:0)

<%%>之间的所有内容都发生在服务器上,所以您需要做的就是删除+并将第二个引号移到%>之后 -

SelectedDivAnimation('#<%=txtFirstName.ClientID%>');
SelectedDivAnimation('#<%=txtLastName.ClientID%>');

假设它在ASP页面中。

因此,假设txtFirstName.ClientID设置为client_a,服务器会将<%=txtFirstName.ClientID%>替换为client_a,然后再将其发送给客户端。所以客户端实际上会看到这个 -

SelectedDivAnimation('#client_a');

如果您在客户端看到正确的ID,那么这很好,但是您有另一个问题 -

function SelectedDivAnimation(aspControl) {
    $(controlid).on('focus', function () {
        $(this).css({'width':'100%','transition':'1s'});
    });
    $(controlid).on('focusout', function () {
        $(this).css({ 'width': '50%', 'transition': '1s' });
    });
}

您将变量aspControl传递给函数,但是您使用的是名为controlid的变量;你可能想把它们都设置为相同,即 -

function SelectedDivAnimation(aspControl) {
    $(aspControl).on('focus', function () {
        $(this).css({'width':'100%','transition':'1s'});
    });
    $(aspControl).on('focusout', function () {
        $(this).css({ 'width': '50%', 'transition': '1s' });
    });
}