我有计时器功能,在这样的时间结束后点击结束测试(提交)按钮
var dur = $ {
Schedule.duration
};
dur = dur * 60 * 1000;
setTimeout(function () {
$('#endtest5').click();
}, +dur);
我在同一个提交按钮上也有确认功能,但是我不想在时间结束时调用确认功能,或者当以编程方式点击EndTest时,我该怎么做? 我的确认功能如下 -
<input align="left" type="submit" name="end" value="End Test" id="endtest5" class="myButton" onclick="return confirm('Are you sure you want to continue')"/>
答案 0 :(得分:1)
删除onClick
属性并使用jQuery设置click
事件处理程序
然后设置标志(testing
)以确定click
是否实际上是使用鼠标或函数执行的:
var testing = false;
$('#endtest5').click(function(){
if(!testing){
return confirm('Are you sure you want to continue');
}
testing = false;
});
var dur = $ {
Schedule.duration
};
dur = dur * 60 * 1000;
setTimeout(function () {
testing = true;
$('#endtest5').click();
}, +dur);
答案 1 :(得分:1)
.trigger()始终将 isTrigger 属性添加到事件对象。
您可以测试此属性,以检查事件是否是从另一个jQuery函数(例如您的计时器)触发的。
如果您需要阻止提交,可以使用event.preventDefault()测试confirm返回值。
//
// Remove the onclick inline event handler if you cannot do it by hand
//
$('#endtest5').removeAttr('onclick');
$('#endtest5').on('click', function(e) {
if (e.isTrigger !== undefined) {
// if timer triggers this event do nothing
return;
}
var retVal = confirm('Are you sure you want to continue');
// if cancel....no submit
if (retVal == false) {
e.preventDefault();
}
})
//
// simulate a timer click: nothing will happen...
//
$('#endtest5').click();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input align="left" type="submit" name="end" value="End Test" id="endtest5" class="myButton" onclick="return confirm('Are you sure you want to continue')"/>
答案 2 :(得分:0)
将确认移至函数并创建变量以检查测试是否已完成或结束,然后在运行确认之前检查该变量。