我有一个包含以下规则的文本框: 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正确返回数据值。问题出在最后一行。
我尝试了很多方法来设置它,但似乎都没有。这应该是一个简单的问题,但我无法让它工作。
答案 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