我有几个可以自动填充数据的文本框,我正在使用 javascript 函数来清除文本框一次,然后恢复为仅在输入某些文本时才清除的 javascript 函数。
例如:标准输入为“ADDRESS”的文本框将自动填充“ABC123”,然后清除焦点。如果文本框为空,则onblur,会返回“ADDRESS”
这类似于Change an element's onfocus handler with Javascript? 中的问题?但我无法让它工作。有什么建议么?
我的文本框只是 ASP.NET 文本框,并且 onfocus/onblur 事件在后面的代码中设置:
<asp:TextBox ID="txtAddress" Text="ADDRESS" runat="server" CssClass="txtboxwrong" />
代码背后:
txtAddress.Attributes.Add("onFocus", "clearOnce(this,'ADDRESS');")
txtAddress.Attributes.Add("onBlur", "restoreText(this,'ADDRESS');")
我的javascript如下:
function clearText(obj, deftext, defclass, defvalue) {
if (obj.value == deftext) {
if (!defvalue) { defvalue = '' }
obj.value = defvalue;
if (!defclass) { defclass = 'txtbox' }
obj.className = defclass;
}
};
function restoreText(obj, deftext, defclass, defvalue) {
if (!defvalue) { defvalue = '' }
if (obj.value == defvalue || obj.value == '') {
obj.value = deftext;
if (!defclass) { defclass = 'txtboxwrong' }
obj.className = defclass;
}
};
function clearOnce(obj, deftext) {
obj.value = '';
obj.className = 'txtbox';
obj.onfocus = function () { clearText(obj, deftext); };
};
编辑:
感谢@rescuecreative,我已经修复了探针。通过在 clearOnce 中返回 onfocus 更改,它将元素的 onfocus 设置为正确的功能并正常工作!编辑如下:
function clearOnce(obj, deftext) {
obj.value = '';
obj.className = 'txtbox';
return function () { clearText(obj, deftext); };
};