如果元素在TD标记中,调用函数的任何变通方法?

时间:2014-10-09 13:44:55

标签: javascript html-table onchange

示例代码:

HTML:
    <td title="" class="fv fvu" id="custompicklist1" style="padding-left: 6px; cursor:     default;">&nbsp;</td>


Javascript:
    <script>
    function InactivateConvert() {

        var bu = (document).getElementById("A0.R0.Indexed Pick 3").innerHTML,
            kob = (document).getElementById("A0.R0.ZOptimizedCustomPick_0").innerHTML,
            ebd = (document).getElementById("A0.R0.Estimated Close Date").innerHTML,
            er = (document).getElementById("A0.R0.Potential Revenue").innerHTML;

        if (bu !== "&nbsp;" && kob !== "&nbsp;"  && ebd !== "&nbsp;"  && er !== "&nbsp;" ) {
$("#BTN_TB_LeadDetailForm_ConvertLead").addClass("buttonTD");
        }
        else {
            $("#BTN_TB_LeadDetailForm_ConvertLead").removeClass("buttonTD").addClass("disableButtonTD").attr('title', "Please make sure that the following fields are dropdown1, dropdown2, date3, are filled in");
        }
    }
</script>

<script>
$(document).ready(function(){
$("#DIV_SC_InlinePLEditor:select").attr("onchange","InactivateConvert()");
InactivateConvert();
});
</script>

每当某个字段由用户填充时,我想调用一个函数来通过onChange()事件启用按钮。比方说,我试图监控custompicklist1是否更新。所以一旦更新,就会调用onChange()事件并调用一个能启用按钮的特定函数。

所以它就像是在启用按钮之前应填写的字段的验证。

事实上,TD标签不支持onChange。

我希望这是有道理的。

请原谅我,我是新手。谢谢你的快速反馈! :)

有谁知道怎么做到这一点?提前谢谢!

  

我的问题是,按钮“#BTN_TB_LeadDetailForm_ConvertLead”,在我手动刷新页面之前不会启用/禁用。我们希望它在字段更新后自动做出相应的反应。

1 个答案:

答案 0 :(得分:0)

td内容的更改不会触发onchange事件。您需要使用Mutation Observer来检测td中的更改。一个简单的例子:

&#13;
&#13;
function firesOnTDChange(m) {
  alert(m[0].type);
}
var td = document.getElementById('custompicklist1'),
  tdObserver = new MutationObserver(firesOnTDChange);

tdObserver.observe(td, {
  childList: true
});

setTimeout(function() {
  td.innerHTML = 'Row 1 Col 2';
}, 2000);
&#13;
<table>
  <tr>
    <td>Row 1 Col1</td>
    <td id="custompicklist1">&nbsp;</td>
  </tr>
</table>
&#13;
&#13;
&#13;

请注意,IE&lt; 11。

中不支持Mutation Observers