我有一个html表单,它使用jquery焦点和模糊来清除和恢复一些预设的字段文本。但是,表单位于模态对话框中,可以使用jquery hide()和show()隐藏和显示。但是,当窗体被隐藏时,它会抛出一个javascript错误:
an invalid form control with name = 'email' is not focusable
我假设这是因为表单已隐藏且无法访问。有没有办法强制模糊事件?或者某种方法来解决这个错误?这是我的代码:
$j('.dField').focus(function(){
clearInput($j(this)[0]); //The [0] seems to be necessary to retrieve the element at the DOM object level
});
$j('.dField').blur(function(){
restoreInput($j(this)[0]);
});
function clearInput(textField) {
if (textField.value == textField.defaultValue) {
textField.value = "";
}
}
//Restores the default value
function restoreInput(textField){
if (textField.value == ""){
textField.value = textField.defaultValue;
}
}
$j('#dFormBack').click(function(){
$j('#dContentContainer').show();
$j('#vehicle_form').hide();
});
答案 0 :(得分:1)
您可以在blur
事件监听器中激活该功能,而不是尝试启动模糊事件。
restoreInput($j(".dfield")[0]);
附注,你的第一行可以更有效地写出:
$j('.dField').focus(function(){
clearInput(this);
}).blur(function(){
restoreInput(this);
});
事件处理程序中的 this
引用事件侦听器附加到的DOM元素。不必将this
包装在JQuery包装器中,并使用[0]
再次获取DOM元素。
答案 1 :(得分:1)
答案 2 :(得分:0)
你是对的。如果某些内容不可见,则无法focus()
'或blur()
'。