使用JQuery onblur设置文本框值

时间:2012-10-26 19:18:23

标签: javascript jquery asp.net textbox onblur

我有一个包含以下规则的文本框: 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正确返回数据值。问题出在最后一行。

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

2 个答案:

答案 0 :(得分:1)

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

更改此行:

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

到此:

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

它会起作用,因为这是Attribute Ends with Selector

答案 1 :(得分:1)

1:确保您没有javascript错误。我看到在转换中缺少“{”。

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元素。 Find ASP.NET ClientID in jquery