2017-02-13 25 views
0

爲什麼button在每個框的值相同時未被禁用。jQuery如果條件不能正常工作

我有4個文本框,2個用於比較部門名稱的文本框和2個用於比較部門活動的文本框。

$("#departmentIDInput, #departmentNameInput, #departmentActive").bind("keyup change", function() { 
 
    var departmentIDInput = $("#departmentIDInput").val(); 
 
    var departmentNameInput = $("#departmentNameInput").val(); 
 
    var departmentNameInputCurrent = $("#departmentNameInputCurrent").val(); 
 
    var departmentActive = $("#departmentActive").val(); 
 
    var departmentActiveVal = $("#departmentActiveVal").val(); 
 
    var departmentActiveValCurrent = $("#departmentActiveValCurrent").val(); 
 

 
    if (departmentNameInput != departmentNameInputCurrent) { 
 
    $("#btnUpdate").attr('disabled', false).removeClass('btn_inact').addClass('btn_act'); 
 
    } else { 
 
    $("#btnUpdate").attr('disabled', true).removeClass('btn_act').addClass('btn_inact'); 
 
    } 
 

 
    if (departmentActiveVal == departmentActiveValCurrent) { 
 
    $("#btnUpdate").attr('disabled', false).removeClass('btn_inact').addClass('btn_act'); 
 
    } else { 
 
    $("#btnUpdate").attr('disabled', true).removeClass('btn_act').addClass('btn_inact'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="departmentNameInput" name="departmentNameInput" maxlength="30" value="Production"/> 
 
<input type="text" id="departmentNameInputCurrent" name="departmentNameInputCurrent" maxlength="30" value="Production"/> 
 

 
<input type="text" name="departmentActiveVal" class="departmentActiveVal" id="departmentActiveVal" value="Y"/> 
 
<input type="text" name="departmentActiveValCurrent" class="departmentActiveValCurrent" id="departmentActiveValCurrent" value="Y"/> 
 

 
<input type="checkbox" class="departmentActive" id="departmentActive" /> 
 

 
<input type="button" class="button turquoise" id="btnUpdate" value="Update" disabled/>

  1. 如果複選框,點擊或不點擊,按鈕做工不錯
  2. 當類型的東西 「departmentNameInput」,例如:生產(在departmentNameInputCurrent是:生產)時,按鈕工作正常,意味着禁用。但是,當我嘗試再次刪除文本時,與「departmentNameInputCurrent」相同,該按鈕不會被禁用。

任何人都有想法?

+0

中有沒有按鈕你的HTML樣本。也可以使用'prop()'而不是'attr()'來設置按鈕的禁用狀態 –

回答

0

由於第二個if條件,每個方框的值相同時,該按鈕不會被禁用。

if (departmentActiveVal == departmentActiveValCurrent) { 
    $("#btnUpdate").attr('disabled', false).removeClass('btn_inact').addClass('btn_act'); 
    } 

這個計算結果爲真,該按鈕將被啓用

+0

任何訣竅都可以做到這一點? –

+0

你只需要使用一個簡單的 - if(departmentNameInput!= departmentNameInputCurrent && departmentActiveVal == departmentActiveValCurrent){... – Janar

0

你可以試試三元操作中簡化了您的功能,如:

$("#departmentIDInput, #departmentNameInput, #departmentActive").bind("keyup change", function() { 
 
    var departmentIDInput = $("#departmentIDInput").val(); 
 
    var departmentNameInput = $("#departmentNameInput").val(); 
 
    var departmentNameInputCurrent = $("#departmentNameInputCurrent").val(); 
 
    var departmentActive = $("#departmentActive").val(); 
 
    var departmentActiveVal = $("#departmentActiveVal").val(); 
 
    var departmentActiveValCurrent = $("#departmentActiveValCurrent").val(); 
 
    var isNameEqual = departmentNameInput === departmentNameInputCurrent; 
 
    var isActiveValueEqual = departmentActiveVal === departmentActiveValCurrent; 
 
    var isDisabled = isNameEqual && isActiveValueEqual; 
 

 
    $("#btnUpdate").prop('disabled', isDisabled).removeClass('btn_inact').addClass('btn_act'); 
 
});