Javascript函数没有被称为onblur

时间:2011-11-29 22:13:31

标签: javascript jquery

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

我试图在用户点击输入框时调用一个close函数,但它似乎没有工作。

不起作用:

<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返回false。

6 个答案:

答案 0 :(得分:2)

close是本机函数[docs]。您不能使用该名称。所以

close();确实是window.close()

尝试:

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

答案 1 :(得分:1)

你的onblur中不需要javascript:改为:

<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>

答案 2 :(得分:1)

您应该使用不引人注目的javascript,并在$(document).ready()添加内部使用jQuery中内置的.blur函数,如下所示:

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

您还需要重命名close函数,因为它是根据mozilla docs保留的(感谢@Mike Stewart)

答案 3 :(得分:1)

将函数名称从close更改为其他名称,因为close函数是window对象的一部分。

此外,在任何类型的dom-ready事件观察器被触发后,都无法指定函数声明。

示例:请注意,如果您等待window.load或dom.ready函数未附加到dom元素(输入)

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

答案 4 :(得分:0)

你真的需要HTML中的onblur事件吗?也许更好地将jQuery'blur'事件附加到元素? 像这样:http://jsfiddle.net/VaVy8/

答案 5 :(得分:0)

在谷歌浏览器上禁用了

onblur(这将适用于Firefox和IE) 你可以使用

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