>我有一个动态表,其中一列是从数据库中获取的,另一列是动态字段。代码如下:
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('')
}
}