通过jquery

时间:2018-11-29 07:57:09

标签: jquery

通过以下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 []”]'获取最大值来替换最大值。

1 个答案:

答案 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}}中。