すべてのテキストボックスに値が設定され、ラジオボタンがチェックされたときにボタンを有効にしたい。ユーザがテキストエリアから値を削除していないかどうかを動的にチェックする方法
私はいくつかの値を削除しようとしない限り、動作します。次に、テキストボックスの1つが空ですが、ボタンを有効にしていますが、無効にしておきたいものです。どのようにそれを変更するには?
<body>
<h2>@ViewBag.Title.</h2>
<div class="row">
<div class="col-md-8">
<section>
@using (Html.BeginForm("Add", "Question", new {ReturnUrl = ViewBag.ReturnUrl}, FormMethod.Post, new {@class = "form-horizontal", role = "form"}))
{
@Html.AntiForgeryToken()
<h4>//</h4>
<hr/>
@Html.ValidationSummary(true, "", new {@class = "text-danger"})
@Html.TextAreaFor(m => m.QuestionContent, new {@class = "form-control", @rows = "7", @cols = "50", @id= "a", @type = "textarea" })
@Html.TextAreaFor(m => m.AnswerA, new {@class = "form-control", @rows = "7", @cols = "50", @style = "margin-top: 15px", @id = "a", @type = "input" })
@Html.TextAreaFor(m => m.AnswerC, new {@class = "form-control", @rows = "7", @cols = "50", @style = "margin-top: 15px",@id = "a", @type = "input" })
@Html.TextAreaFor(m => m.AnswerD, new {@class = "form-control", @rows = "7", @cols = "50", @style = "margin-top: 15px; margin-bottom: 30px", @id = "a", @type = "input" })
@Html.RadioButtonFor(m => m.CorrectAnswer, "a", new {@type="radio"})
@Html.RadioButtonFor(m => m.CorrectAnswer, "b", new { @type = "radio" })
@Html.RadioButtonFor(m => m.CorrectAnswer, "c", new { @type = "radio" })
@Html.RadioButtonFor(m => m.CorrectAnswer, "d", new { @type = "radio" })
<input id="addNewQuestion" type="submit" value="Dodaj nowe pytanie" class="btn btn-default" style="margin-top: 30px; margin-left: -80px !important"/>
<input id="finish" type="submit" name="AddAndFinish" value="Zakończ dodawanie testu" formaction="AddAndFinish" class="btn btn-default" style="margin-top: 30px; margin-left: 10px !important"/>
</div>
</div>
</div>
}
</section>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$('input[type="submit"]').attr('disabled', true);
$('input[type="text"],textarea').on('keyup', function() {
var questionContentValue = $("#questionContentArea").val();
var answerAValue = $('input[name="ans_a"]').val();
var answerBValue = $('input[name="ans_b"]').val();
var answerCValue = $('input[name="ans_c"]').val();
var answerDValue = $('input[name="ans_d"]').val();
var clicked = false;
$('[type="radio"]').change(function() {
clicked = true;
if ((questionContentValue != '') && (answerAValue != '') && (answerBValue != '') && (answerCValue != '') && (answerDValue != '')&& clicked == true) {
$('input[type="submit"]').attr('disabled', false);
} else {
$('input[type="submit"]').attr('disabled', true);
}
});
});
});
</script>
</body>
There're also other stufs in code to make my html look good, but they're not important.
他のイベントハンドラ内にイベントリスナーをネストしないでください。それらを分けてください。あなたのケースでは、すべてのキーアップで新しい変更リスナーが作成され、以前のものが存在し、ラジオにイベントリスナーが存在しないため、キーアップが発生しません。 – charlietfl