val('') 删除动态表中的所有值


val('') removing all the values in dynamic table

>我有一个动态表,其中一列是从数据库中获取的,另一列是动态字段。代码如下:

PHP代码

<table class="table table-bordered" id="tb" style='width:30%;margin-left:30%;'>
    <tbody>
        <?PHP
            $myquery=" select ROW_NUMBER,Weightage FROM Appraisal_Objectives WHERE Serial_Number like '%1153' ORDER BY Row_Number asc";
            $fetched=sqlsrv_query($conn,$myquery) ; 
            if( $fetched === false ) { die( print_r( sqlsrv_errors(), true ));}
            while($res=sqlsrv_fetch_array($fetched,SQLSRV_FETCH_ASSOC))
            {
                $Weightage=$res['Weightage'];
                $Row_Number=$res['ROW_NUMBER'];
                    echo "<tr><td>".$Weightage."</td>";
                    echo "<td><input type='number' name='Rating[]' id='Rating' class='Rating form-control' onkeypress='return isNumberKey(event)' onChange='calc(this.parentElement.parentElement)' td>";
                    echo "<td style='display:none'><input type='number' name='max_rating[]' id='max_rating' class='max_rating form-control' onChange='calc(this.parentElement.parentElement)' value='$Weightage' td>";
                    echo "<td style='display:none'><input type='number' name='Row_Number[]' id='Row_Number' class='Row_Number form-control' value='$Row_Number' td></tr>";
            }
        ?>
    </tbody>
</table>
在"评级"中输入的数据

与在"最大评级"中输入的数据进行比较,如果Rating > Max Rating,则会生成警报。直到这里工作正常。如果条件满足,我正在尝试使值为空。jQuery代码如下:

j查询代码

<Script>
    function isNumberKey(evt){
        var charCode = (evt.which) ? evt.which : event.keyCode
        if (charCode > 31 && (charCode != 46 &&(charCode < 48 || charCode > 57)))
            return false;
        return true;
    }
    window.calc = function (thisRow){
        var one = thisRow.getElementsByTagName('input')[0].value;
        var rating = parseInt(one);
        var two = thisRow.getElementsByTagName('input')[1].value;
        var maxrating = parseInt(two);
        if(rating > maxrating)
        {
            alert('Your rating cannot exceed the maximum rating!');
            $(".Rating").each(function(){
            $(".Rating").val('');
            });
        }
    }
</script>

问题:

当满足条件并生成警报时,将重置表中存在的所有行值,而不仅仅是该特定行。我哪里出错了,或者我错过了什么?我是jQuery的新手,我所做的一切都来自互联网的各种来源。将不胜感激任何帮助/建议。干杯!:)

$('.Rating') - 获取此类页面上的所有元素。您应该指定您的行。

试试这个:

thisRow.getElementsByClassName('Rating')[0].value = '';

更多:你也可以试试这个$(thisRow).find('.Rating').val('');

$('.Rating') - 是一个jquery选择器,将选择整个文档中的所有评级类。

thisRow.getElementsById('Rating').value = "";

您的循环正在使用类选择器 '.评级'。 这将选择具有"评级"类的所有元素(即所有行)。

您实际上是为拥有的每一行更新一次所选内容(所有行)的值。 一种低效:)

也许尝试更多类似的东西:

echo "<td><input type='number' name='Rating[]' id='Rating-row-$RowNumber' class='Rating form-control' onkeypress='return isNumberKey(event)' onChange='calc("Rating-row-$RowNumber")' td>";

和:

  if (rating > maxrating) {
    $("#"+thisRow).val('')
  }

}