2

我正在尝试检测文件上传输入字段何时更新。在 IE 和 FF 中,如果我使用 blur(),我可以做到这一点,但对于 Chrome,我需要使用 change()。由于 Chrome(我相信 safari)不会触发 blur 事件,jquery.supports 对象中有一个属性来检查这个还是我必须使用已弃用的 .browser 对象?

这是一个示例页面,说明了我的意思,因为下面的海报说更改的事件适用于所有三个浏览器,并且是我应该使用的,但我认为获得检测对模糊事件支持的问题的答案仍然很有用.

<html>
    <head>
        <script src="jquery-1.4.3.min.js" type="text/javascript"></script>
        <script type="text/javascript">
        $(document).ready(function () {
            $('#test-input').change(function () { alert('changed'); });
            $('#test-input').blur(function () { alert('blurred'); });
            });
        </script>
    </head>
    <body>
        <input type="file" id="test-input">
    </body>
</html>
4

1 回答 1

0

尝试使用我无法归功于此功能的功能来检测您的事件是否受支持,但是我忘记了从哪里得到它:

var isEventSupported = function(eventName) { //Function to detect supported events
var el = document.createElement('div');
    eventName = 'on' + eventName;
    var isSupported = (eventName in el);
    if (!isSupported) {
        el.setAttribute(eventName, 'return;');
        isSupported = typeof el[eventName] == 'function';
        }
    el = null;
    return isSupported;
    }

之后定义一个包含您的非/或事件的变量:

var ChangeOrBlur = (isEventSupported('blur')) ? 'blur' : 'change'; //with change as your default

然后将您的函数绑定到您首选的事件是:

$('#test-input').bind(ChangeOrBlur, function(){alert(ChangeOrBlur);});

让我知道我们如何为您服务...

于 2012-01-04T14:33:32.590 回答