我有一个动态表,其中一列来自数据库,另一列是动态字段。代码如下:
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代码如下:
jQuery代码
<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的全新蜜蜂,无论我做了什么,都来自互联网的各种来源。非常感谢任何帮助/建议。干杯! :)
答案 0 :(得分:1)
$('.Rating')
- 使用此课程获取所有ELEMENTS ON PAGE。
你应该指定你的行。
试试这个:
thisRow.getElementsByClassName('Rating')[0].value = '';
更多:强>
你也可以尝试这个$(thisRow).find('.Rating').val('');
答案 1 :(得分:0)
$('.Rating')
- 是一个jquery选择器,它将选择整个文档中的所有Rating类。
使用
thisRow.getElementsById('Rating').value = "";
答案 2 :(得分:0)
你的循环正在使用类选择器'.Rating'。这将选择具有“评级”类的所有元素(即所有行)。
您实际上每行更新一次选择的值(所有行)。有点低效:)
也许尝试更像这样的事情:
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('')
}
}