I am using laravel 5.5 created a quiz form where user can enter his answer and submit. user will have max duration when it reaches 0 the form will automatically submit. I used sessionStorage
to store the timer so that the timer won't reset on page refresh, but the problem is sessionStorage
is not clearing after the form submit.
<span id="divCounter" class="label label-success timer">00 Hrs : 00 Mins : 00 Secs</span>
<script type="text/javascript">
//Set Time To Session Storage
if (sessionStorage.getItem("timerStorage<?php echo $singleData->id; ?><?php echo Auth::id(); ?>")) {
if (sessionStorage.getItem("timerStorage<?php echo $singleData->id; ?><?php echo Auth::id(); ?>") == 0) {
var timer = <?php echo $singleData->duration; ?>;
} else {
var timer = sessionStorage.getItem("timerStorage<?php echo $singleData->id; ?><?php echo Auth::id(); ?>");
}
}else{
var timer = <?php echo $singleData->duration; ?>;
}
setInterval(
function() {
if(timer == 0) {
sessionStorage.setItem("timerStorage<?php echo $singleData->id; ?><?php echo Auth::id(); ?>",
<?php echo $singleData->duration; ?>);
document.quizSubmit.submit();
} else {
timer--;
timeConvert(timer);
sessionStorage.setItem("timerStorage<?php echo $singleData->id; ?><?php echo Auth::id(); ?>", timer);
}
}, 1000);
function timeConvert(timer) {
var oldtime = timer;
var hours = Math.floor(timer / 3600);
var minutes = Math.floor(timer % 3600 / 60);
var seconds = timer % 3600 % 60;
if (hours < 10) {hours = "0"+hours;}
if (minutes < 10) {minutes = "0"+minutes;}
if (seconds < 10) {seconds = "0"+seconds;}
document.getElementById('divCounter').innerHTML = hours + ' Hrs : ' + minutes + ' Mins : ' + seconds + ' Secs';
document.getElementById("myInput").value = timer;
}
//Clear Storage Session On Form Submit
$('#quizSubmitClear').submit(function(e){
e.preventDefault();
sessionStorage.clear();
});
</script>
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire