1

我想在填充相关字段时触发一些 JavaScript

我希望找到一种 Jquery 监视隐藏字段contact_id 的方法以及当它更改调用 Javascript 函数时,但我不确定这是否可能

目前我更改了editviewdefs,以便事件触发onb​​lur

Code:

 array (
            'name' => 'contact_name',
            'label' => 'LBL_CONTACT_NAME',
            'customLabel' => '{$MOD.LBL_CONTACT_NAME}:  <span class="required">*</span>',
            'displayParams' => 
            array (
              'initial_filter' => '&account_name_advanced={$fields.account_name.value}&status_advanced=Live',
              'field' => 
              array (
                'onchange' => 'getOpenCases()',
              ),
              'javascript' => 
              array (
                'btn' => ' onblur="getOpenCases()" ',
                'btn_clear' => ' onblur="getOpenCases()" ',
              ),
            ),
            'tabindex' => '11',
          ),

但这意味着用户必须在触发事件之前点击离开该字段

我希望它在 contact_id 填充后立即发生

这可能吗?如果是这样,我该如何实现?

4

1 回答 1

1

我有一个相当复杂的方法来检查隐藏输入的变化。

当有人单击按钮或开始在文本字段中输入内容时,我会触发 setInterval 函数。然后我使用 jQuery data() 检查隐藏输入中的任何变化。当我注意到我改变时,我运行我的自定义 js,然后我清除间隔。

所有代码都在一个外部 js 文件中。

// watch for a change in account ID
$('#btn_account_name').click(function(){
    checkAccountIdChange();
});
$('#account_name').blur(function(){
    checkAccountIdChange();
});

function checkAccountIdChange() {
    var theInterval = setInterval(function(){
        var oldId = $('#account_id').data('oldId');
        var newId = $('#account_id').val();
        if (oldId != newId && newId != '') {
            getAccountData(newId, theInterval);
            $('#account_id').data('oldId', newId);
        }

    }, 500);
}

function getAccountData(id, theInterval) {

    // do your custom js
    clearInterval(theInterval);

}

这不是特别干净或迷人,但确实有效。我很想看看其他人如何解决这个问题。

于 2013-08-07T11:32:13.920 回答