2016-01-22 42 views
0

使用Magento 1.9 ->addFieldDependence方法,我的相關字段值會動態變化,因此不會觸發magento字段相關方法。當數值動態改變時,表格字段相關性未觸發Magento 1.9

我試着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觸發何時目標字段的依賴關係是從另一個字段動態更新?

謝謝。

回答

0

問題解決了! Thanks to Mirasvit Extensions

這種觸發的工作原理:

function trigger(value) { 
    // $j("#meter_type_code").trigger("change"); 
    var evt = document.createEvent("HTMLEvents"); 
    evt.initEvent("change", false, true); 
    document.getElementById("meter_type_code").dispatchEvent(evt); 
} 

我註釋掉JQuery的方法確實觸發更改事件,但沒有造成Magento的依賴性的方法來工作。我會對任何評論感興趣,爲什麼在這種情況下JQuery觸發器不起作用。

相關問題