2013-10-16 79 views
0

我有一個4列的表和一個提交按鈕。像這樣:禁用按鈕,如果選中複選框,但相應的文本框爲空

FOOD YES NO REASON 
pizza cb  cb tb 
fries cb  cb tb 
curry cb  cb tb 
noodle cb  cb tb 

[SUBMIT] 

我需要的是按鈕被禁用,如果有任何沒有框被選中,但其相應的文本框是空的。 我有這方面的工作在一定程度上。如果你順序遍歷每一個,那很好。所以你對比薩說是,並且按鈕保持啓用狀態。您將其更改爲「否」,並且該按鈕被禁用。您提供了一個原因,並再次啓用該按鈕。您清除文本框並且該按鈕再次被禁用。您可以更改回Yes,並啓用該按鈕。然後你做同樣的薯條和一切正常。等等

但是,如果您爲所有這些選項選擇否,並提供所有選項的原因(因此啓用了按鈕),然後清空比薩餅的文本框,則該按鈕不會像應該那樣被禁用。但是,如果你清除了麪條,那麼它確實如此。

我一直在試圖做的是每次點擊一個複選框或Reason列中的keyup時循環遍歷表格,但我對jQuery相當陌生,並不知道該怎麼做。 ..任何人都可以幫忙?

謝謝。

代碼:

$('input[type=checkbox]').click(function(){ 
     checkReasons(); 
} 

$('input[type=text]').keyup(function(){ 
     checkReasons(); 
}); 

function checkReasons(){ 
    $('#mytable tr:not(:first)').each(function(){ 
     var cb = $(this).find('td:nth-child(3) input[type=checkbox]'); 
     var tb = $(this).find('td:nth-child(4) input[type=text]').val(); 
     if (cb.is(':checked')){ 
      if (tb.length == 0){ 
       $('#button').attr('disabled','disabled');     
      } else { 
       $('#button').removeAttr('disabled','disabled'); 
      } 
     } 
    }); 
} 
+1

你能分享的HTML,所以我們(或你)可以使撥弄演示 – Sergio

+0

好的,謝謝。 http://jsfiddle.net/CPSeM/ 這比我在上面的帖子中有點臃腫,因爲我試圖保持簡單。 – Fox

回答

1

不要使用.attr(),使用.prop()http://api.jquery.com/prop/

,可能更好地處理change事件,而不是clickkeyup事件,此值實際上已經改變之前這可能發生。

的如何做到這一點這裏舉例:http://jsfiddle.net/EQkLB/

+0

很好,謝謝。那麼有沒有辦法使用keyup?有了這個解決方案,我需要離開文本框以影響按鈕。 – Fox

+0

是的,你可能會添加鍵盤,只需將其從「更改」更改爲「更改鍵盤」來檢查這兩個事件。 – samjudson

+0

太棒了,現在完美地工作。愚蠢的問題,但在我的代碼中,我會把那個..?我的完整代碼在這裏:http://jsfiddle.net/CPSeM/1/ - 這兩個函數已經只是創建額外的列,移動文本框,並控制其可見性。但我不知道在哪裏解決您的問題......謝謝。 – Fox

相關問題