假设我有两个简单的输入,如:
I1: <input id='I1' type='text' value=''>
I2: <input id='I2' type='text' value=''>
和相应的JS所以I2只有在I1的值正常时才能获得焦点:
var ok = true;
$('#I1').on('blur', function(e) { ok = doSomeErrorChecking(); } );
$('#I2').on('focus', function(e) { if( !ok ) e.target.blur(); } );
只要&#34; doSomeErrorChecking()&#34;几乎立即返回true / false。
我的问题是&#34; doSomeErrorChecking()&#34;必须调用一些Ajax的东西,不再返回true / false,而是一个Promise。
如何创建此&#34; onFocus&#34;在这种情况下运作?
答案 0 :(得分:2)
您可以通过多种方式执行此操作,但一种简单的方法是在I2
输入上添加已禁用的属性。当Ajax
结算时,您可以从I2
像
这样的东西I1: <input id='I1' type='text' value=''>
I2: <input id='I2' type='text' value='' disabled>
你的脚本看起来像
$('#I1').on('blur', function(e) {
$.get("url", function(data, status){
//work on data
$("I2").prop("disabled", false)
});
} );