2012-10-26 102 views
3

我與這些規則中的文本框: 1)I填充textbox.text從字典中會 2)如果用戶輸入一個新值,setTextBoxData將其保存在字典 3)在進入(焦點)時,字段文本被清空。 4)模糊時,如果該字段仍然爲空,我想將其設置爲原始值。使用jQuery的onblur設置文本框的值

<asp:TextBox ID="txtNumberEmployees" runat="server" Width="50px" onfocus="this.value='';" 
onchange= "javaScript:$(function()setTextBoxData('NUMBEREMPLOYEES','txtNumberEmployees');});" 
onblur="javaScript:restore ('txtNumberEmployees', 'NUMBEREMPLOYEES');"/> 

以上引用的 「恢復」 功能是:

function restore(control, input) { 
    var data = getInputData(input); 
    $('#' + control).val(data); 
} 

getInputData正確返回的數據值。問題在於最後一行。

我已經嘗試了很多方法來設置這個,但似乎沒有工作。這應該是一個簡單的問題,但我無法讓它工作。

+0

看起來像一個語法錯誤: 'JavaScript的:$(函數()setTextBoxData( 'NUMBEREMPLOYEES', 'txtNumberEmployees');});' 應該不是隻是 'JavaScript的:setTextBoxData('NUMBEREMPLOYEES ','txtNumberEmployees');' –

回答

1

問題是ASP.NET將生成一個不會是txtNumberEmployees的ID。 ASP.NET將爲您的輸入生成一個ID,並以txtNumEmployees結束。

改變這一行:

$('#' + control).val(data); 

這樣:

$('[id$=' + control + ']').val(data); 

它會工作,因爲這是Attribute Ends with Selector

+0

謝謝。我認爲編程是一種巫術。如果我們不說出正確的咒語,掃帚會拿起水桶玩弄調皮。如果您不明白該參考資料,請觀看「幻想曲」。 –

+0

當涉及到Javascript和jQuery時,你的比較是完全有效的。我有點喜歡它:-) –

1

1:確保你沒有javascript錯誤。我看到onchange上有一個缺失的'{'。

2:你可以簡單地通過「這個」作爲文本參考,並更新它象下面這樣:

<asp:TextBox ID="txtNumberEmployees" runat="server" Width="50px" onfocus="this.value='';" 
onchange= "javaScript:$(function(){setTextBoxData('NUMBEREMPLOYEES',this);});" 
onblur="javaScript:restore (this, 'NUMBEREMPLOYEES');"/> 

然後簡單地設置類似的值:

$(control).val(data); 

3:還有其他的方法以及抓住一個像這裏顯示的asp.net元素。 Find ASP.NET ClientID in jquery