IE8下,input移除disabled后的首次鼠标造成的blur事件不触发

问题描述:两个input,id分别为a和b,b默认为不可用的状态,即disabled状态,a绑定了change事件能控制b的可用状态(当a有值时,b可用,反之则不可用),同时b又绑定了blur事件,当a从空数据填写数据后立即点击b输入框,此时b就已变成可用状态,且此时光标在b输入框中,当首次点击b输入框以外的区域时,不会触发b所绑定的blur事件,之后点击b后再点b以外的区域,才会触发b所绑定的blur事件

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>Title</title>
</head>
<body>
<div id="box">
    <input id="a">
    <input id="b" disabled>
</div>
<script src="../../../lib/jquery/jquery.min.js"></script>
<script>
    $(function () {
        $('#box').on('blur','#b',function () {
            alert('bbbbbbbbbb');
        });
        $('#box').on('change','#a',function () {
            if($(this).val()){
                $('#b').removeAttr('disabled');
            }else{
                $('#b').attr('disabled','disabled');
            }
        });
    });
</script>
</body>
</html>

求高手指教如何才能在首次从b点击到b以外区域就能触发b的blur事件,并告知一下原因

阅读 2.5k
1 个回答

你应该是有值就解开b,而不是a失去焦点在解开b,change改成input事件

     $('#box').on('input','#a',function () {
            if($(this).val()){
                $('#b').removeAttr('disabled');
            }else{
                $('#b').attr('disabled','disabled');
            }
        });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏