問題:
部分的に機能する関数があり、何らかの理由で値 100 でスタックします。他のすべての値は問題なく機能します。この関数は、入力フィールドの値を JSON 配列内の対応する値と比較します。
シナリオ:
たとえば、3、1、1 の順に選択すると、最終的に値 12 になります。入力フィールドに 100 を入力して先に進むと、addClass() で示されるエラーが表示されます。100 は 12 以上であるため、addClass() でエラーを追加することはできません。ここでエラーはどこにありますか?
HTML コード:
<div id="ref" class="control-group">
<label class="control-label">Number of references:</label>
<div class="controls">
<div class="input-prepend">
<input class="input-small" id="references" name="references" type="text">
</div>
</div>
</div>
配列は PHP によって生成され、次のように json_encode() を介して JavaScript に変換されます。
var numbers = <?php echo json_encode($numbers); ?>;
配列:
{
"1":{
"1":{
"1":"36",
"2":"63"
},
"2":{
"1":"54",
"2":"63"
}
},
"2":{
"1":{
"1":"60",
"2":"105"
},
"2":{
"1":"90",
"2":"105"
}
},
"3":{
"1":{
"1":"12",
"2":"21"
},
"2":{
"1":"18",
"2":"24"
}
}
}
jQuery コード:
<script type="text/javascript">
$(document).ready(function()
{
$('#references').change(function()
{
var choice1 = $('input[name=level]:checked').val();
if (choice1 == '1')
{
var choice2 = $('input[name=authors]:checked').val();
}
else
{
var choice2 = $('input[name=credits]:checked').val();
}
var number = numbers[3][choice1][choice2];
if ($(this).val() < number)
{
$('#ref').addClass('error');
}
else
{
$('#ref').removeClass('error');
}
});
});
</script>