通过以下php代码,我从php获取了一些值并显示在表中。
<?php
$no = 1;
$total = 0;
while ($row = mysqli_fetch_array($query)) {
$stu = $row['stu_id'] == 0 ? '' : number_format($row['stu_id']);
echo '<tr>
<td>'.$no.'</td>
<td>'.$row['student_id'].'</td>
<input type="hidden" name="student_id[]" value='.$row['student_id'].'>
<td style="text-align: left;">'.$row['student_name'].'</td>
<input type="hidden" name="student_name[]" value='.$row['student_name'].'>
<input type="hidden" name="Maxmarks[]" value='.$MaxMarks.'>
<td>'."<input name='obtmarks[]' placeholder='' class='form-control obtmark' type='number' required='required' maxlength='2' style='width: 120px;'>".'</td>
<td>'."<input name='percentage[]' placeholder='' class='form-control percentage' type='text' required='required' style='width: 120px;'>".'</td>
<td>'."<input name='grade[]' placeholder='' class='form-control grades' type='text' required='required' style='width: 120px;'>".'</td>
<td>'."<input name='remarks[]' placeholder='' class='form-control remark' type='text' required='required' style='width: 120px;'>".'</td>
<input type="hidden" name="class[]" style="text-align: center;" value='.$row['class'].'>
<input type="hidden" name="test_date[]" value='.$TestDate.'>
<input type="hidden" name="test_subject[]" align="center" value='.$SelectSubject.'>
<input type="hidden" name="test_type[]" align="center" value='.$TestType.'>
</tr>';
$total += $row['stu_id'];
$no++;
}
?>
以下jquery代码是为了限制用户输入小于或等于最大标记的获得标记。
<script>
$('[name="obtmarks[]"]').keyup(function(){
if(parseInt($(this).val()) > '[name="Maxmarks[]"]'){
$('#div1').html('value cannot be greater then 25');
$(this).val('');
}
else if(parseInt($(this).val()) < 0)
{
$('#div1').html('value cannot be lower then 0');
$(this).val('');
}
else
{$('#div1').html('');}
});
</script>
如果我给出25而不是'[name =“ Maxmarks []”]',则代码正在工作,我是从html post方法针对变量$ MaxMarks获取Maxmarks的。 如何通过从'[name =“ Maxmarks []”]'获取最大值来替换最大值。
答案 0 :(得分:1)
您在这里有两个问题。首先,您正在将整数与选择器字符串进行比较。您实际上需要根据该字符串创建一个jQuery对象以检索元素,然后在进行比较之前获取其值。
第二,您将有多个name="Maxmarks[]"
输入,因此您当前的选择器将始终与第一个输入进行比较。从表的结构来看,您似乎想改为比较当前行上的标记。因此,您需要使用DOM遍历来找到相关的Maxmarks
元素。您可以使用closest()
来获取最接近的公共tr
元素,然后再获取find()
。试试这个:
$('[name="obtmarks[]"]').keyup(function() {
var $div1 = $('#div1');
var $obtMarks = $(this);
var marks = parseInt($obtMarks.val(), 10);
var maxMarks = parseInt($obtMarks.closest('tr').find('[name="Maxmarks[]"]').val(), 10);
if (marks > maxMarks) {
$div1.html('value cannot be greater than 25');
$obtMarks.val('');
} else if (marks < 0) {
$div1.html('value cannot be lower than 0');
$obtMarks.val('');
} else {
$div1.html('');
}
});
最后,请注意,您生成的HTML无效; hidden
输入字段必须包含在td
的{{1}}中。