2013-03-22 77 views
0

我在javascript中有這個控件,並且有些東西是錯誤的,因爲它似乎並不是每次我進行更改時都會執行。我把警報,所以我可以看到發生了什麼。我做錯了什麼?爲什麼JavaScript代碼不會每次都執行?

controlToSetcontrol1是checboxs和control2是一個單選按鈕。

function SetValues(controlToSet, control1, control2) { 

    if (control1.is(':checked') && control2.is(':checked')) { 
     $(controlToSet).attr('disabled', 'disabled'); 
     $(controlToSet).attr('checked', false); 
     alert('checked and checked'); 
    } 

    if (control1.is(':checked') && control2.is(':checked') == false) { 
     $(controlToSet).attr('disabled', false); 
     alert('checked an unchecked'); 
    } 

    if (control1.is(':checked') == false && control2.is(':checked') == false) { 
     $(controlToSet).attr('disabled', 'disabled'); 
     $(controlToSet).attr('checked', false); 
     alert('unchecked and unchecked'); 
    } 
} 

這些控件在Web應用程序使用,並取決於其他人之一,當主題之一是改變這些JavaScript代碼應該執行的價值,但不是所有的時間發生這種情況。我做錯了什麼?

+1

請創建一個複製問題的http://jsfiddle.net/演示。你如何/何時調用'SetValues'? – 2013-03-22 13:16:45

+0

「做出改變」是什麼意思? – 2013-03-22 13:16:49

+0

是否因爲您錯過了control2被選中而control1不是的情況? – 2013-03-22 13:16:56

回答

0

您的瀏覽器可能使用JavaScript的緩存版本。嘗試清除瀏覽器緩存,和/或重新啓動瀏覽器。

0

如果您希望在更改時執行您的代碼,則必須捕獲change事件。

可以使用change綁定功能:

control1.add(control2).change(function(){ 
    SetValues(controlToSet, control1, control2) 
}); 
+0

此控件用於Web應用程序,如果其中一個控件正在更改值(選中,取消選中,禁用),我想執行此代碼。控件取決於其他人之一。我把這個警告消息,所以我可以看到,似乎當我更改複選框的JavaScript代碼不執行。那就是問題所在。 – Ale 2013-03-22 14:53:30

+0

@Florina當兩個控件中的一個改變時,我寫的代碼調用你的函數。你測試過了嗎? – 2013-03-22 14:57:03

0

沒有忘記的情況時control1.is( ':檢查')==假& & control2.is( ':檢查')?

相關問題