2009-11-30 100 views
1

首先,管家:快速審查讓我覺得這不是重複的,但會很樂意被糾正。通過複選框啓用多種形式並提交提交

我有一個ASP.NET MVC應用程序有一個頁面與多個窗體,每個窗體有一些文本字段,協議複選框和提交按鈕。如果協議複選框未針對每個表單單獨選中,我想禁用提交按鈕。我找到了工作,但我得到我想的東西優雅的感覺,我知道有些人在這裏遠遠比我

這裏更好的jQuery的我有工作代碼:

$(function() { 
     $("form").each(function() { 
      $("#Agreement", this).click(function() { 
       if (this.checked) { 
        $($($(this).parent().get(0)).find("input:submit").get(0)).attr("disabled", ""); 
       } else { 
        $($($(this).parent().get(0)).find("input:submit").get(0)).attr("disabled", "disabled"); 
       } 
      }); 
     }); 
    }); 

您可以看到代碼在頁面準備就緒時運行,選擇頁面上的所有'表單並將點擊處理程序附加到每個表單中的每個協議複選框。我一直在努力的東西,看起來特別不雅的方法是從觸發click事件的複選框對象返回到父表單對象,然後到複選框的同級提交按鈕以禁用它。如果任何人都能想出更好的解決方案,那麼我已經準備好接受教育!

+0

我很想知道爲什麼這是downvoted,投票沒有評論,實際上是窮人的工作。 – Lazarus 2010-02-10 13:38:00

回答

1

這樣的事情可能會更好:

$(function() { 
    $("form").each(function() { 
     $("#Agreement", this).click(function() { 
      $('input:submit', this.form).attr("disabled", this.checked ? "" : "disabled"); 
     }); 
    }); 
}); 

它看起來就像你重新使用id="Agreement"每種形式中 - 你不應該這樣做。

你甚至可以做到這一點,如果您更改ID類:

$(function() { 
    $("form .Agreement").click(function() { 
     $('input:submit', this.form).attr("disabled", this.checked ? "" : "disabled"); 
    }); 
}); 
0

我會由具有功能disableSubmit(OBJID,checkState)接近它,那麼實際上只是編碼每個複選框屬性的onclick =」 disableSubmite(「submit1」,this.checked);

disableSubmit(objId, checkState) 
{ 
    $(#objId).attr("disabled", checkState ? "" : "disabled"); 
} 

jQuery是很酷,但有時你只需要在JS直接連接到引發它關閉對象