2014-10-10 3 views
1

Мне нужно записать событие изменения на TD ниже. Всякий раз, когда изменяется его содержимое (в данном случае «Измерение Rosemount»), мне нужно вызвать функцию. Я не думаю, что принимает атрибут «onchange» ... так вот в чем проблема. Это можно сделать?Как зарегистрировать событие onchange для <td>

<TD style="PADDING-LEFT: 6px; CURSOR: default" id="A0.R0.Indexed Pick 3" class="fv fvu" title="Rosemount Measurement" _savedBKClr>Rosemount Measurement</TD> 

Я вывешу экран печати большей части кода, в который входит выше линии (в случае, если это помогает).

context for code

+0

http://stackoverflow.com/questions/17470715/onchange-event-for-html-form-elements-in-td-tag-with-chrome. См. Этот вопрос, может это вам поможет. –

+0

Прочтите это тоже http://stackoverflow.com/questions/2844565/is-there-a-jquery-dom-change-listener – GramThanos

ответ

0

Я хотел бы предложить использовать пользовательские события, например, contentchange, и вызывая его из src, который изменяет содержимое.

Подписаться на события

$('table.yourClassName').on('contentchange', 'td', fn); 

На содержание изменения кода

$(refToTheTd).trigger('contentchange'); 
+0

Вниз и без комментариев. Могу я спросить, почему? – anddoutoi

+0

Спасибо! Это работает +1 –

0

TD не событие изменения, потому что это не имеет значения, она имеет только текст внутри. Единственный способ это создать пользовательское событие для него (вы должны инициировать событие себя после изменения текста внутри)

setTimeout(function() { 
 
    $('td').text(function() { 
 
    return this.innerHTML + '... success?'; 
 
    }).trigger('custom:td:name_whatever.event'); 
 
}, 1000); 
 

 
$('td').on('custom:td:name_whatever.event', function(){ 
 
    alert(this.innerHTML); 
 
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td>Test</td> 
 
    </tr> 
 
</table>

0

Я нашел решение, которое может работать для моего требования, но Я не адаптировал его еще (до сих пор пытаюсь понять это):

//assume tbl has id foobar 
document.getElementById('foobar').addEventListener('change',function(e) 
{ 
    e = e || window.event; 
    var target = e.target || e.srcElement; 
    var name = target.id || target.getAttribute('name'); 
    alert('the ' + name + ' element changed!'); 
},false); 

к сожалению, эти два решения, предложенное выше не работает для моего требования.

+0

Это отлично работает, за исключением одного: оно не фиксирует изменения, внесенные в текст в ''. См. Это: [ссылка] (http://stackoverflow.com/questions/26342367/event-listener-for-td-content) – letsplay14me

Смежные вопросы