(function($){ 'use strict'; var data = {}, $other = $(".radio").find("input[type=radio]:last"), $target = "", name = "", idx = 0, back = false, enabled = false, btnClose = function (){ $( "#modal-content,#modal-overlay" ).fadeOut( "slow" , function(){ //[#modal-overlay]を削除する $('#modal-overlay').remove() ; } ) ; }, toggleOther = function () { if ($other.length) { if ($other.prop("checked")) { $("#others").removeAttr("disabled"); if ($("#others").val() != "") { enabled = true; } else { enabled = false; } } else { $("#others").attr({disabled: "disabled"}); } } }, setForm = function () { $target = $(this); if ($target.attr("type") === "radio" || $target.attr("type") === "checkbox") { if ($target.val() === data[name]) { $target.attr({checked: "checked"}); $target.parent("div").siblings().children("input").removeAttr("checked"); $target.parent("div").siblings().children("label").removeClass("checked"); } } else { $target.val(data[name]); } chkSend(); }, chkSend = function () { var $radios = $("form").find('[type=radio]'); if ($("form").find("select").length) { if (!back && $("form").find("select").val() === '選択') { enabled = false; } else { enabled = true; } } if ($("form").find("[type=text]").length) { if (!back && !$("form").find("[type=text]").val()) { enabled = false; } } if ($("form").find("#email").length) { if (!back && !$("form").find("#email").val()) { enabled = false; } else { enabled = true; } } if ($radios.length) { enabled = false; $radios.each(function () { var $cur_radio = $(this); if ($cur_radio.prop("checked")) { $cur_radio.next("label").addClass("checked"); if ($cur_radio.val() !== "その他") { enabled = true; } } else { $cur_radio.next("label").removeClass("checked"); } }); toggleOther(); } if (enabled) { $(".btnNext").removeClass("disabled"); } else { $(".btnNext").addClass("disabled"); } return enabled; }; for (name in data) { if ($("[name=" + name + "]").length) { $("[name=" + name + "]").each(setForm); } } $("form").on("submit", function () { return back || enabled; }); $(".btnPrev").click(function () { back = true; $("form").find("[name=step]").val($("form").find("[name=step]").val() - 2); $("form").submit(); return false; }); $(".btnClose").on("click", btnClose); $("form").on("change", chkSend); $("form").trigger("change"); })(jQuery);