当前位置: 动力学知识库 > 问答 > 编程问答 >

zend set value subform elements through jquery ajax response

问题描述:

I am unable to set value for ef_name fetched from db. There are multiple rows against single id.

Form

public function addRow()

{

$row_form = new Zend_Form(array(

'elements' => array(

'ef_name' => array(

'type' => 'text'

),

),

));

$new_form_index = count($this->_subForms)+1;

$row_form->setElementsBelongTo('diam['.$new_form_index.']');

$this->addSubform($row_form, $new_form_index);

return $row_form;

}

public function init() {

$this->addElement('hidden', 'id', array(

'value' => 1

));

for($cdr=0;$cdr<10;$cdr++)

$this->addRow();

}

View

<?php

echo $this->form ;

$this->jQuery()->enable();

?>

<?php $this->jQuery()->onLoadCaptureStart(); ?>

jQuery('#category').change(newEcat);

<?php $this->jQuery()->onLoadCaptureEnd(); ?>

<script><!--

function newEcat()

{

var p = $("#category").val();

var response = $.ajax({

url: "<?php echo $this->url(array('controller'=>'index',

'action'=>'details')) ?>",

type: "GET",

data: {id: p},

cache: false,

success: function(text){

response = text;

$("#category").val($(text).find("select[name='category']").val());

$("#ef_name").val($(text).find("select[name='ef_name']").val());

},

error: function() { alert('Sorry, no family members defined.'); }

});

}

--></script>

Controller

 if ($this->getRequest()->isXmlHttpRequest()) {

$this->_helper->layout->disableLayout();

$this->_helper->viewRenderer->setNoRender(TRUE);

$id = $this->_getParam(id);

$form->category->setValue($id);

}

网友答案:

View

function newEcat()
{

    var p = $("#category").val();

    var response =   $.ajax({

    url: "<?php echo $this->url(array('controller'=>'index', 'action'=>'details')) ?>", 
    type: "GET",       
    dataType: 'json',
    data: {id: p}, 
    cache: false,
    success: function(text){

    if(JSON.stringify(text) == '[]')        
    alert('Sorry, there are no family details for this employee.');


        for(var valVar=0;valVar<10;valVar++){               
        valVarinc   =   valVar+1;
            $("#diam-"+valVarinc+"-ef_name").val('');

            }

        for(var valVar=0;valVar<10;valVar++){               
        valVarinc   =   valVar+1;
        if(text[valVar].ef_name != ''){
            $("#diam-"+valVarinc+"-ef_name").val(text[valVar].ef_name);             
            }

            }

},
error: function() { alert('Sorry, there are no family details for this employee.'); }
 });

}

Controller

if ($this->getRequest()->isXmlHttpRequest()) {
         $id = $this->_getParam(id);                        
         $form->category->setValue($id);    

}
分享给朋友:
您可能感兴趣的文章:
随机阅读: