我的问题是我无法让我的处理程序更新全局变量,因此我可以使用它们。 我正在编写一个应该"看到"的脚本。当您更改一行并添加您留给数据库的行时。
要做到这一点,我需要从tr
获取id并进行比较。但这是问题所在。我不能让我的处理程序提供我需要的数据。
这是我动态创建的表。
<tr id="r'.$value['id'].'">
<td><input type="text" name="from_date" value="'.$value['db_field1'].'" class="autoupdate r'.$value['id'].'"></td>
<td><input type="text" name="from_date" value="'.$value['db_field2'].'" class="autoupdate r'.$value['id'].' required"></td>
<td><input type="text" name="from_date" value="'.$value['db_field3'].'" class="autoupdate r'.$value['id'].' required"></td>
</tr>
这是我的jquery。
$('tr td input.autoupdate').on('blur',function(event){
event.stopPropagation();
event.preventDefault();
rid = $(this).closest('tr').attr('id');
return rid;
});
$('tr td input.autoupdate').on('focus',function(e){
event.stopPropagation();
event.preventDefault();
newid = $(this).closest('tr').attr('id');
});
if ( rid !== newid ) {
console.log('old id: '+rid);
console.log('new id: '+newid);
} else {
console.log('same row');
}
我在rid
之外定义了newid
和$(document).ready(function()
。
答案 0 :(得分:1)
我认为这就是你要找的东西:
var rid='',newid='';
$('tr td input.autoupdate').on('blur', function (event) {
event.stopPropagation();
event.preventDefault();
rid = $(this).closest('tr').attr('id');
});
$('tr td input.autoupdate').on('focus', function (event) {
event.stopPropagation();
event.preventDefault();
newid = $(this).closest('tr').attr('id');
check();
});
function check(){
if (rid !== newid) {
console.log('old id: ' + rid);
console.log('new id: ' + newid);
} else {
console.log('same row');
}
}
<强> CHECK THE FIDDLE 强>
答案 1 :(得分:0)
相反,您可以使用'mouseenter'和'mouseleave'事件,
var rid='',newid='';
$('tr').on('mouseenter', function (event) {
event.stopPropagation();
event.preventDefault();
newid = $(this).attr('id');
console.log('mouse leave', newid);
check();
});
$('tr').on('mouseleave', function (e) {
event.stopPropagation();
event.preventDefault();
rid = $(this).attr('id');
console.log('mouse enter', rid);
check();
});
function check(){
if (rid !== newid) {
console.log('old id: ' + rid);
console.log('new id: ' + newid);
} else {
console.log('same row');
}
}