如何从`tr`中获取`id`我离开并且`tr`我将作为全局变量输入

时间:2014-07-15 09:29:49

标签: javascript jquery html

我的问题是我无法让我的处理程序更新全局变量,因此我可以使用它们。 我正在编写一个应该"看到"的脚本。当您更改一行并添加您留给数据库的行时。

要做到这一点,我需要从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()

2 个答案:

答案 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');
    }
}