根据之前的模糊禁用焦点

时间:2018-04-21 02:48:28

标签: javascript events promise

假设我有两个简单的输入,如:

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;在这种情况下运作?

1 个答案:

答案 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)
    });
 } );