1

リレート フィールドにデータが入力されたときに JavaScript をトリガーしたい

Jquery が隠しフィールド contact_id を監視し、それが変更されたときに Javascript 関数を呼び出す方法を見つけたいと思っていましたが、これが可能かどうかはわかりません

現時点では、イベントが onblur をトリガーするように editviewdefs を変更しました

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 に答える