【发布时间】:2016-01-22 19:16:52
【问题描述】:
使用 Magento 1.9 ->addFieldDependencemethod,我的相关字段值会动态更改,因此不会触发 magento 字段依赖方法。
我试过jquery$j("#meter_type_code").trigger("change");强制onchange事件触发Magento依赖函数无济于事。
我的代码的相关摘录:
<script>
var metertype = <?php echo $meter_type; ?>; //$metertype is an array
</script>
$fieldset->addField('meter_type_code', 'text', array( //set to text for testing will be hidden
'name' => 'machine.meter_type_code',
$fieldset->addField('meter_type', 'select', array(
'label' => 'Meter Type',
'class' => 'required-entry',
'required' => true,
'name' => 'machine.meter_type',
'onchange' => 'changeFieldValue(metertype[this.value]);trigger();',
'values' => Mage::getModel('machinemanager/machine_metertype')->getMeterTypes($attributeSetName),
'disabled' => false,
'readonly' => false,
'after_element_html' => '</br><small>Time in service</small>',
'tabindex' => 1
))
->setAfterElementHtml('
<script>
function changeFieldValue(value) {
document.getElementById("meter_type_code").value = value;
}
function trigger(value) {
//this is where I tried various methods to trigger the event none of which had effect to fire the Magento field dependence
}
</script>
');
$this->setChild('form_after', $this->getLayout()
->createBlock('adminhtml/widget_form_element_dependence')
->addFieldMap('meter_type_code','meter_type_code')
->addFieldMap('meter_type','meter_type')
->addFieldMap('time', 'time')
->addFieldMap('time_adjust', 'time_adjust')
->addFieldMap('cycles', 'cycles')
->addFieldMap('cycles_adjust', 'cycles_adjust')
->addFieldDependence('time', 'meter_type_code', array('t','tc'))
->addFieldDependence('time_adjust', 'meter_type_code', array('t','tc'))
->addFieldDependence('cycles', 'meter_type_code', array('c','tc'))
->addFieldDependence('cycles_adjust', 'meter_type_code', array('c','tc'))
);
当我使用 jquery 成功强制 onchange 事件时,直到我真正重新键入meter_type_code 的值并导致真正的键盘操作之前,什么都没有发生。这触发了 magento javascript 使依赖字段完美地出现和消失。
谁能告诉我,当依赖项的目标字段从另一个字段动态更新时,如何触发 addFieldDependence?
谢谢。
【问题讨论】:
标签: javascript jquery magento magento-1.9