2015-02-09 71 views
0

我正在使用帶有各種複選框組的表單,並且我希望僅當選中任何複選框時纔會顯示頁面底部的下一個按鈕。檢查表單中是否存在任何複選框(MooTools)

我發現這裏使用jQuery工作的解決方案:我正在尋找一種方式與MooTools的做到這一點

var checkboxes = $("input[type='checkbox']"), 
submitButt = $("input[type='submit']"); 

checkboxes.click(function() { 
submitButt.attr("disabled", !checkboxes.is(":checked")); 
}); 

http://jsfiddle.net/BPhZe/1937/

,並在按鈕狀態不是我希望能有一個解決方案「禁用「,但通過CSS隱藏。

回答

1

MooTools具有屬性Element.checked以查看指定元素是否設置爲「checked」或不是。 MooTools還允許您將「:checked」添加到您的選擇器以僅獲取匹配的選定元素。這意味着你可以做這樣的事情,以確定任何複選框是否被選中:

if ($$("input[type=checkbox]:checked").length > 0) 

還是這個確定沒有複選框正在檢查:

if ($$("input[type=checkbox]:checked").length < 1) 

給你掛樣表,這裏有一種方法:

$$("input[type=checkbox]").each(function(checkboxInput) { 
    checkboxInput.addEvent("click", function() { 
     // show submit button if at least 1 checkbox is checked 
     if (checkboxInput.checked) { 
      $$("input[type=submit]").each(function(submitButton) { 
       submitButton.removeProperty("disabled"); 
      }); 
     } 
     // hide submit button if no checkboxes are checked 
     if ($$("input[type=checkbox]:checked").length < 1) { 
      $$("input[type=submit]").each(function(submitButton) { 
       submitButton.set("disabled", "disabled"); 
      }); 
     } 
    }); 
}); 

如果你的提交按鈕有一個id屬性 - say,id =「formSubmitButton」你可以通過這種方式引用它,並使用稍少的代碼完成同樣的事情,而不必使用$$(「input [type = submit]」)。each(function(submitButton){...}:

$("formSubmitButton").removeProperty("disabled"); 

要從禁用/重新啓用按鈕變爲顯示/隱藏按鈕,您可以使用屬性style =「display:none;」設置按鈕來啓動窗體,然後調用submitButton.removeProperty(「style」 )複選框被選中時,submitButton.setStyle(「display」,「none」)不再被選中。該版本的完整代碼示例,使用提交按鈕ID:

$$("input[type=checkbox]").each(function(checkboxInput) { 
    checkboxInput.addEvent("click", function() { 
     // show submit button if at least 1 checkbox is checked 
     if (checkboxInput.checked) { 
      $("formSubmitButton").removeProperty("style"); 
     } 
     // hide submit button if no checkboxes are checked 
     if ($$("input[type=checkbox]:checked").length < 1) { 
      $("formSubmitButton").setStyle("display", "none"); 
     } 
    }); 
}); 
相關問題