不知道我是否正確地理解你的要求,但我想試圖重建場景......請檢查下面的jsfiddle(我用的jQuery和jQuery UI)
HTML
<div class="exam">
SOME TEXT
</div>
<div id="dialog" title="Basic dialog">
<p>Your Test will close in <span class="time"></span> secs unless you return to the page</p>
</div>
CSS
body {
font-family: "Trebuchet MS", "Helvetica", "Arial", "Verdana", "sans-serif";
font-size: 62.5%;
}
.exam {
height: 500px;
width: 100%;
border: 1px solid #ccc;
background: #549bed;
}
JQ UERY
$(document).ready(function() {
$('.exam').on('mouseout', function() {
$("#dialog").dialog("open");
// loop time
$('.time').text('10');
(function myLoop(i) {
setTimeout(function() {
// To check whether OK button on dialog was clicked
$('.ui-dialog-buttonset').click(function() {
$(this).data('clicked', true);
});
// To check whether 'X' button on dialog was clicked
$('.ui-dialog-titlebar-close').click(function() {
$(this).data('clicked', true);
});
// storing button click status
var clckd = $('.ui-dialog-buttonset').data('clicked');
var xclckd = $('.ui-dialog-titlebar-close').data('clicked');
console.log(clckd);
// exiting the loop if 'OK' or 'X' button is clicked
if (clckd || xclckd) {
$('.ui-dialog-buttonset').data('clicked', false); // resetting 'OK' button status
$('.ui-dialog-titlebar-close').data('clicked', false); // resetting 'X' button status
return;
}
if (--i) myLoop(i);
$('.time').text(i); // decrement i and call myLoop again if i > 0
// If user has not come back
if (i == 0) {
alert('sorry exam closed'); //code for ending exam
}
}, 1000)
})(10);
// End loop time
});
$('.exam').on('mouseenter', function() {
$("#dialog").dialog("close");
$('.time').text('10');
});
$(function() {
$("#dialog").dialog({
autoOpen: false,
show: {
effect: "blind",
duration: 1000
},
hide: {
effect: "explode",
duration: 1000
},
modal: true,
buttons: {
Ok: function() {
$(this).dialog("close");
}
}
}); // dialog.dialog
}); // function dialog
}); // Document ready
https://jsfiddle.net/7oec0v5t/2/
來源
2016-02-09 09:54:07
RRR
好的,謝謝您的代碼...但如果嵌入該代碼在Moodle的實際代碼 –
發生在頭段jQuery代碼 – RRR