OnMouseMove on body tag导致子下拉列表元素出现问题

时间:2015-02-25 19:02:26

标签: javascript jquery html

我在body标签上使用mousemove属性:

<body onload="StartTimers();" onmousemove="ResetTimers();">
</body>

我正在使用它来重置用户的登录会话。这工作正常,直到我在div中的这个body标签内添加一个下拉列表时,它会导致问题。 每当我尝试从下拉列表中选择值时,它就会消失,因为我正在移动光标并且触发了resetTimers()。

有些人可以帮我解决这个问题。

由于

var timoutWarning = 900000; 
var timoutNow = 1200000;


var warningTimer;
var timeoutTimer;

// Start timers.
function StartTimers() {
    warningTimer = setTimeout("IdleWarning()", timoutWarning);
    timeoutTimer = setTimeout("IdleTimeout()", timoutNow);
}

// Reset timers.
function ResetTimers() {
    clearTimeout(warningTimer);
    clearTimeout(timeoutTimer);
    StartTimers();
    $("#dialog").dialog().dialog('close');
}


function IdleWarning() {
    $("#dialog").dialog({
        autoOpen: true,
        modal: true,
        width: 400,
        title:'Alert'
    });
}

function IdleTimeout() {
    window.location.href = 'Logoff';
}

解答:

$("#dialog").dialog().dialog('close'); 

导致jquery问题。因此,一切都搞砸了。当用户点击&#34; OK&#34;我已将此更改为关闭对话框警报屏幕上的按钮.LIKE:

function IdleWarning() {
    $("#dialog").text('Your session will be closed in 5 minutes due to inactivity. Click OK to continue.').dialog({
        autoOpen: true,
        modal: true,
        width: 400,
        title:'Alert'
        ,buttons: {
            "OK": function () {
                ResetTimers();
                $("#dialog").dialog('close');
            }
        }
    });
}

1 个答案:

答案 0 :(得分:0)

问题在于,您要让mousemove事件冒泡到body元素。为mousemove元素添加select的事件处理程序,并使用stopPropagation()方法阻止事件冒泡。试试这个(假设您可能有多个选择)。

$('select').mousemove(function( event ) {
    event.stopPropagation();
});

这应该可以解决问题。