我想在填充相关字段时触发一些 JavaScript
我希望找到一种 Jquery 监视隐藏字段 contact_id 的方法,并在它更改时调用 Javascript 函数,但我不确定这是否可行
目前我更改了editviewdefs,以便事件触发onblur
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 填充后立即发生
这可能吗?如果是这样我该如何实现?
最佳答案
我有一个相当复杂的方法来检查隐藏输入中的更改。
当有人单击按钮或开始在文本字段中输入内容时,我会触发 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);
}
这不是特别干净或迷人,但确实有效。我很想看看其他人如何解决这个问题。
关于javascript - SugarCRM - 填充相关字段时触发 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18076773/