我正在使用jquery block UI插件,我的要求是检查用户是否是授权用户,这是我的代码
<script language="javascript" type="text/javascript">
$(document).ready(function () {
$('#btnsubmit').click(function () {
$.blockUI({ css: {
border: 'none',
padding: '15px',
backgroundColor: '#000',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
opacity: .5,
color: '#fff'
}
});
});
});
function ajaxAuth() {
//UserLogin.IServiceLogin.HelloWorldCC(OnSuccess, OnFailure);
var usrname = document.getElementById('txtusrname').value;
var pasd = document.getElementById('txtpassword').value;
UserLogin.IServiceLogin.GetUseCred(usrname, pasd, onSuccess, onFailed);
}
function onSuccess(result) {
setTimeout($.unblockUI, 0);
var obj = jQuery.parseJSON(result);
if (obj.name != "error" ) {
document.getElementById('labusr').value = obj.name;
document.getElementById('labpass').value = obj.passd;
document.getElementById('labkey').value = obj.key;
location.href = "DesignAPage.aspx";
} else {
$.blockUI({ message: $('#question'), css: { width: '350px'} });
// $('#ok').click(function () {
// $.unblockUI();
// return false;
// });
}
}
function onFailed(result) {
alert("failure");
}
</script>
所以问题是当我使用$.blockUI({ message: $('#question'), css: { width: '350px'} });
时,它只会阻止屏幕一秒钟并取消阻止屏幕。
非常感谢任何帮助
答案 0 :(得分:1)
问题是由setTimeout($.unblockUI, 0);
造成的。即使你可能认为调用它会导致代码附加函数立即运行,但事实并非如此。您可以通过运行以下命令来验证这一点:
setTimeout(function() {
console.log('one');
}, 0);
console.log('two');
在two
之前记录 one
。这样做的原因在于JavaScript内部处理计时器的方式。因为它是单线程的,所以没有任何东西同时运行。将0毫秒传递给setTimeout
只会强制该函数在第一个可用时刻运行。在这种情况下,就在调用$.blockUI
之后。
John Resig在http://ejohn.org/blog/how-javascript-timers-work/撰写了一篇很好的文章。
答案 1 :(得分:1)
尝试在else块中执行此操作
else {
$.unblockUI({
onUnblock: function () {
$.blockUI({ message: $('#question'), css: {
border: 'none',
padding: '15px',
backgroundColor: '#000',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
opacity: .5,
color: '#fff'
}
});
$('#ok').click(function () {
$.unblockUI();
return false;
});
}
});
}
答案 2 :(得分:0)
我把你的代码剁了一下但这很有用。
$(document).ready(function() {
$.blockUI({ css: {
border: 'none',
padding: '15px',
backgroundColor: '#000',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
opacity: .5,
color: '#fff'
}
});
onSuccess();
});
function onSuccess() {
$.unblockUI();
$.blockUI({ message: "Some message", css: { width: '350px'} });
}