私はこのJavaScriptを持っています:
$(function () {
$.fn.enable = function () {
return this.show().removeAttr("disabled");
}
$.fn.disable = function () {
return this.hide().attr("disabled", "disabled");
}
var incomeType = $("#MyModel_IncomeTypeCheckBox");
var incomeTypeStatusSection = $("#incomeTypeStatusDiv, #incomeTypeStatusDiv input, #incomeTypeStatusDiv textarea, #incomeTypeStatusDiv select");
setControls();
incomeType.change(function () {
setControls();
});
function setControls() {
switch (incomeType.val()) {
case "FullTime":
incomeTypeStatusSection.disable();
break;
case "PartTime":
incomeTypeStatusSection.disable();
break;
case "SelfEmployed":
incomeTypeStatusSection.enable();
break;
case "SocialSecurity":
incomeTypeStatusSection.disable();
break;
case "Retirement":
incomeTypeStatusSection.disable();
break;
case "ChildSupport":
incomeTypeStatusSection.disable();
break;
case "Maintenance":
incomeTypeStatusSection.disable();
break;
case "Other":
incomeTypeStatusSection.disable();
break;
}
}
});
私の見解のコードは単純です:
<div id="incomeTypeStatusDiv">
<!--Show some hidden inputs here-->
</div>
MyModel.IncomeTypeCheckBox
上記の値enum
に対応するに基づいています。case
たとえば、上記のjavascriptをドロップダウンリストで使用できます。選択すると、適切なが表示/非表示になります<div>
。
チェックボックスリストの選択に基づいて同じコードを使用して表示/非表示にしようとしていますが、成功しません。<div>
非表示にしたいのは、非表示ではなく表示されていることです。チェックボックスリストで機能しないことの何が欠けていますか?チェックボックスリストを使用してこれを機能させるにはどうすればよいですか(つまり、[SelfEmployed]チェックボックスをクリックすると適切<div>
に表示され、[SelfEmployed]チェックボックスをオフにすると非表示になり<div>
ますか?
私はそれをできた:
$(document).ready(function () {
$("input[name$='stepincomeinformation.incometypecheckbox']").click(function () {
var check_value = $(this).val();
if (check_value == 'selfemployed') {
$("#incometypecheckbox_selfemployed").toggle(this.checked);
}
});
$("#incometypecheckbox_selfemployed").hide();
});
ただし、<div>
が非表示になっていると、検証しようとしているため、先に進むことができません。他のJavaScriptは、非表示になっている場合は検証しません<div>
。
javascriptは、Mvc2を使用した動的UIの検証に基づいており、私にとってはうまく機能しています。が非表示になっている場合に検証を無効にするために使用されます(そして、バインダーだけでなく<div>
modも使用します。MicrosoftMvcValidation.js
どんな助けでも大歓迎です。
以下の最終結果を参照してください(回答に基づく)