如何检查模糊或焦点上是否调用了函数?

时间:2018-03-05 15:28:27

标签: jquery

如何在以下代码中检查my_funcblur是否调用了focus

function my_func(my_arg) {
    // Maintain compatibility with ECMAScript < 6
    // https://stackoverflow.com/a/894877/1563422
    my_arg = typeof my_arg !== 'undefined' ? my_arg : false;

    if(my_arg) {
        // do something
    }
}

// Apply to both blur and focus, in case a user clicks from a field
// onto the background of the page, without focusing another field first
$('#appform').on({
    'blur' : my_func,
    'focus': my_func
}, 'input, select');

2 个答案:

答案 0 :(得分:3)

事件对象的type字段将包含触发它的事件的名称(虽然并不总是您为处理程序定义的名称;例如blur变为focusout

  

Event.type只读属性返回包含事件类型的字符串。它是在构造事件时设置的,并且是通常用于引用特定事件的名称,例如单击,加载或错误

https://developer.mozilla.org/en-US/docs/Web/API/Event/type

function my_func(my_arg) {
  console.log(my_arg.type);
}

$('#appform').on({
    'blur' : my_func,
    'focus': my_func
}, 'input, select');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="appform">
<input>
<input>
<select><option>a</option><option>b</option></select>

答案 1 :(得分:1)

您可以将绑定函数作为事件处理程序传递。

$('#appform').on({
    'blur' : invalid_style.bind(null, 'from-blur'),
    'focus': invalid_style.bind(null, 'from-focus')
}, 'input, select');

bind调用返回一个带有一些参数的函数对象&#34; bound&#34;它。在我的示例中,我们传递null作为上下文,然后传递一个字符串作为invalid_style函数的第一个参数。

在您的函数中,您现在可以检查my_arg参数并从您的函数调用位置进行解密。

参考:Function.prototype.bind()