我正在进行多项选择。这是我的代码:
$(function() {
var q;
var r;
$("body").on("click", "a[id*='addQues']", function() {
var identity = $(this).attr('id');
/\[([0-9]+)\]$/.exec(identity);
var qbis = parseInt(RegExp.$1);
q = (qbis + 1);
$('<label for="nomQues[' + q + ']">Question ' + q + ': </label><input type="text" name="nomQues[' + q + ']" id="nomQues[' + q + ']"/><br/><input type="radio" name="quesType[' + q + ']" value="VF[' + q + ']" id="VF[' + q + ']"/><label for="VF[' + q + ']">Vrai/Faux</label><input type="radio" name="quesType[' + q + ']" value="QCM[' + q + ']" id="QCM[' + q + ']"/><label for="QCM[' + q + ']">QCM</label><input type="radio" name="quesType[' + q + ']" value="QCU[' + q + ']" id="QCU[' + q + ']"/><label for="QCU[' + q + ']">QCU</label><br/><hr id="bar[' + q + ']"/>').insertAfter($(this));
$('a[id="addQues[' + qbis + ']"]').remove();
$('<a id="addQues[' + q + ']">Ajouter une question</a>').insertAfter($("#bar\\[" + q + "\\]"));
});
$("body").on('change', 'input[name*="quesType"]', function() {
var identity1 = $(this).attr('name');
var regex1 = new RegExp("\\[([0-9]+)\\]$");
var result1 = regex1.exec(identity1);
q = parseInt(result1[0]);
var identity2 = $("input[name*='[" + q + "][" + r + "]']").attr('name');
var regex2 = new RegExp("\\[([0-9]+)\\]$");
var result2 = regex2.exec(identity2);
r = parseInt(result2[0]);
alert("One");
if (isNaN(r)) {
r = 1;
alert("Two");
} else {
alert("Three");
}
});
});
&#13;
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<title>QCM</title>
<meta charset="utf-8" />
</head>
<body>
<section>
<label for="nameQuizz">Question:</label>
<input type="text" name="nameQuizz" id="nameQuizz" />
<br/>
<hr/>
<a href=# id="addQues[0]">Add a question</a>
</section>
</body>
</html>
&#13;
为什么不出现警告(&#34; One&#34;)?你有解释吗?我想问题是由于创建了RegExp变量,但我不确定,因为它似乎是一个使用RegExp的好方法(根据MDN)。 提前感谢您的帮助。