フォームにハードコードされた複数の選択肢テストをHTMLで作成しています。JavaScriptとjQueryを使用してフォームに関連するすべてのアクションを実行しています。しかし、私のonClickイベントは発射されていないようです。コンソールを見ると、id 'submission'を持つイベントにフックし、 'on'に移動し、clickイベントでsubmitAnswers()関数を起動するのではなくブラウザを更新することがわかりました。javascript - jQuery onClickイベントが起動しない
あなたは次のようにe.preventDefault()
を使用して
submit
ボタンのデフォルトの動作を阻止する必要が
<form name="javaScriptQuiz" id="jsTest">
<div class="form-group quiz-questions">
<h3>1. First question is either true or false.</h3>
<label for="q1a">
<input type="radio" name="q1" value="a" id="q1a"> A. True
</label>
<label for="q1b">
<input type="radio" name="q1" value="b" id="q1b"> B. False
</label>
<h3>2. Second question is either true or false.</h3>
<label for="q1a">
<input type="radio" name="q1" value="a" id="q1a"> A. True
</label>
<label for="q1b">
<input type="radio" name="q1" value="b" id="q1b"> B. False
</label>
<input class="btn btn-primary btn-lg" type="submit" name="submit" value="Submit!" id="submission">
</form>
$('#submission').on('click', function() {
console.log('Submit fires');
submitAnswers();
});
function submitAnswers() {
var total = 2;
var score = 0;
//captures each of the questions answers in a variable
var q1 = document.form['javaScriptQuiz']['q1'].value;
var q2 = document.form['javaScriptQuiz']['q2'].value;
//Validation
for(var i = 1; i <= total; i++){
if(eval('q' + i) == null || eval('q' + i) == ''){
alert('You missed a question');
return false;
}
}
// Are the answers to test
var answers = ['b', 'a'];
for(var i = 1; i <= total; i++){
if(eval('q' + 1) == answers[i - 1]){
console.log('Evaluating answers');
score ++;
}
}
}
送信ボタンからボタンにボタンの種類を変更します。それはフォームを提出しているためです。そして最後にあなたの提出の回答機能にすべてが正しければ '$( '#Yourformid')を使用してください。submit();' – Nadeem