2009-12-23 21 views
1
$('#<%= txtFirstName.ClientID%>').show(); 

嘗試使用服務器標籤 作爲參數

<input type="text" ID="txtFirstName" runat="server" maxlength="50" 
        class="DefaultTextbox" style="width:180px;" 
        value="First Name" 
        onfocus="ControlOnFocus('First Name',$('#<%= txtFirstName.ClientID%>').show())" 
        onblur="ControlOnBlur('First Name')"/> 

function ControlOnFocus(CompareString,ControlId) 
{ 
    alert(ControlId); 

} 

回答

7

$()是主jQuery功能,也稱爲jQuery()短的別名。您將它傳遞給一個CSS選擇器,並且在CSS中,#表示「具有ID的HTML元素...」。這個ID顯然在這個程序中的ClientID變量中。然後調用show()使命名的HTML元素出現。

1

芽送客戶端Id外部JavaScript文件,$是像jQuery或原型一些JavaScript框架的別名時,#代表在DOM的ID 。就像CSS一樣,這些框架允許您使用CSS語法來選擇元素(。對於類,#對於id等)。 所以$( 「#測試」)的工作原理幾乎一樣的getElementById( '測試')

+0

jQuery和Prototype都支持'show'功能,但只有jQuery在ID選擇器中使用'#'。如果它是Prototype,那麼代碼應該是$$('id')'。 – kiamlaluno 2009-12-23 11:20:23

2

看來你的腳本使用jQuery。

$('#<%= txtFirstName.ClientID%>').show()將返回包含元素屬性id=<%=txtFirstName.ClientID%>,而不是ClientID值的jQuery對象。

我猜你真正的意思是這樣的:

<input type="text" ID="txtFirstName" runat="server" maxlength="50" 
        class="DefaultTextbox" style="width:180px;" 
        value="First Name" 
        onfocus="ControlOnFocus('First Name','<%= txtFirstName.ClientID%>')" // <= pass only the ClientID to your function 
        onblur="ControlOnBlur('First Name')"/> 

function ControlOnFocus(CompareString,ControlId) 
{ 
    $('#'+ControlId).show(); // <= do the show action here, in your function 
    alert(ControlId); 

} 
1

jQuery的語法始終以$開頭,#表示該功能顯示()是其ID設置在元件上應用。假設id是txtFirstName,那麼在傳統Javascript中寫$('#txtFirstName')等同於document.getElementById('txtDirstName')。這將通過提供的id從文檔對象模型(DOM)中選擇元素。一旦選擇元素,就可以在該引用上執行不同的jQuery函數。 show函數使控件/元素可見。同樣,你可以使用.hide()來隱藏元素。