3

我有一个带有以下规则的文本框:1)我在会话中从字典中填充 textbox.text 2)如果用户输入一个新值,setTextBoxData 会将其保存在字典中 3)在输入时(焦点),字段文本是空白。4)在模糊时,如果该字段仍然为空,我想将其设置为原始值。

<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 正确返回数据值。问题出在最后一行。

我尝试了很多方法来设置它,但似乎都没有。这应该是一个简单的问题,但我还不能让它工作。

4

2 回答 2

1

问题是 ASP.NET 将生成一个不会是txtNumberEmployees. ASP.NET 将为您的输入生成一个以 . 结尾的 ID txtNumEmployees

更改此行:

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

对此:

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

它将起作用,因为这是以Selector 结尾的属性

于 2012-10-26T19:30:13.373 回答
1

1:确保您没有 javascript 错误。我看到 onchange 中缺少一个“{”。

2:您可以简单地将“this”作为文本框引用传递并更新如下:

<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 元素,如下所示。在 jquery 中查找 ASP.NET ClientID

于 2012-10-26T20:52:08.593 回答