2011-11-29 53 views
1
function close() { 
    console.log('close'); 
    $("#display").hide(); 
} 

我想在用户点击输入框时,但它似乎并没有工作,以调用closefunction。JavaScript函数不被称为onblur

不起作用:

<input type="text" name="searchQuery" id="searchQuery" onblur="javascript: close();" onkeyup="javascript: getSuggest(); "/> 

作品:

<input type="text" name="searchQuery" id="searchQuery" onblur="javascript: alert('msg');" onkeyup="javascript: getSuggest(); "/> 

getSuggest返回,如果这是假的相关。

+1

的onblur =“JavaScript的:close()方法;” < - 在任何情况下,您都不需要“javascript:”handers。 –

+0

文件准备就绪。 – sciritai

回答

1

变化的函数名从接近别的东西,因为关闭功能的一部分的窗口对象。

此外,您的函数声明不能​​在任何类型的dom-ready事件观察器激活后指定。

实施例:注意到,如果你等待window.load或dom.ready功能没有得到附加到DOM元素(输入)

EDIT http://jsfiddle.net/bb84T/5/

1

你不需要javascript:在你的onblur中。改成这样:

<input type="text" name="searchQuery" id="searchQuery" onblur="close();" onkeyup="getSuggest(); "/> 

编辑尝试改用jQuery的事件,而不是DOM事件:

<input type="text" name="searchQuery" id="searchQuery"> 

<script> 
$(function() { 

    $("#searchQuery").on("blur", function() { 
    console.log('close'); 
    $("#display").hide(); 
    }); 

}); 
</script> 
+0

没有什么区别。 –

+0

你有JS错误吗? –

+0

不,我没有得到任何错误,但'close'也没有得到输出。 –

1

您应该使用不显眼的JavaScript代替了,里面你$(document).ready()附加使用内置的jQuery的.blur功能相反,如下所示:

$('#searchQuery').blur(function(){ 
    myClose(); 
}); 

您还需要重命名您的关闭功能,因为它是根据mozilla docs保留(感谢@Mike Stewart)

2

close是本地功能[docs]。你不能使用这个名字。所以

close();真的window.close()

尝试:

<script> 
function closse() { 
    alert('close'); 
} 
</script> 
<input type="text" name="searchQuery" id="searchQuery" onfocus="closse();" "/> 
+0

绝对重命名'close()',但是用's closse()'重命名两个s?为什么不给它一个更像'hideDisplay()'的描述性名称(因为它就是这样)? – nnnnnn

+0

@nnnnnn,你是对的。我很懒 – Joe

0

的onblur是在谷歌浏览器禁用 (这将在Firefox和IE浏览器),你可以使用

$('#searchQuery').bind('blur', close);