禁用相反的输入,如果我键入另一对

问题描述:

如何禁用一个输入字段,如果我键入另一对输出,然后如果我通过点击退格删除输入例如,所以没有输入字段重新启用第二个输入字段,反之亦然。我到目前为止的代码是低于,但不工作。禁用相反的输入,如果我键入另一对

的JavaScript:

//disable the opposite input field 
    var ATGvalue = $('input#atgOrderId').val(); 
    var BQvalue = $('input#bqOrderId').val(); 

    if (ATGvalue.length > 0) { 
     $('input#bqOrderId').prop("disabled", true); 
    } else { 
     $('input#bqOrderId').removeAttr("disabled"); 
    } 

    if (BQvalue.length > 0) { 
     $('input#atgOrderId').prop("disabled", true); 
    } else { 
     $('input#atgOrderId').removeAttr("disabled"); 
    } 

HTML:

<label for="bqOrderId">bqOrderId </label><input name="bqOrderId" id="bqOrderId" type="text" /> 
<label for="atgOrderId">atgOrderId </label><input name="atgOrderId" id="atgOrderId" type="text" /> 

您的代码的工作,但只有一次 - 有它不断更新,你先换的JS在事件处理函数,并将其连接到您的输入元素:

function mutuallyExclusive(e) { ... } 
$('#bqOrderId').on('change keyup', mutuallyExclusive); 
$('#atgOrderId').on('change keyup', mutuallyExclusive); 

参见this JSFiddle

我重视它的changekeyup事件都:change处理程序上的(脚本)的变化,并keyup为“即时”更新域状态 - 否则它将等待,直到用户从输入删除焦点调用change事件。

你需要包括一个事件里面的代码来检查当用户类型是这样的:

$(document).on('keyup','#bqOrderId',function(){ 
    //your code 
}); 

$(document).on('keyup','#atgOrderId',function(){ 
    //your code 
}); 

后改变它:

$('input#bqOrderId').prop("disabled", true); 
$('input#atgOrderId').prop("disabled", true); 

这样:

$('input#bqOrderId').attr("disabled",true); 
$('input#atgOrderId').attr("disabled", true); 
+0

这可以工作,但它只能在页面的第一次加载时运行。我需要它不断观察这些值的长度。 –