2012-04-09 20 views
0

次jqueryのAjaxコードが#MerryParentEmailからkeyupイベントのために正常に動作取り込ま取得されていませんが、それは#MerryParentState変更イベントのために働いていません。変更イベントが発生していますが、都市のドロップダウンボックスには表示されません。jqueryのAJAX:変更イベントが発火しているが、ドロップダウンボックスは

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("#MerryParentStateId").change(function(){ 
     state=$(this).val(); 
     txt_str="state_id="+state; 
     $.get("../students/getcities",txt_str,function(result){ 
      $("#MerryParentCityId").html(result); 
     }); 
    }); 

}); 

</script> 

students_controller.php

function getcities(){ 
    $options = $this->Student->MerryParent->City->getCities($this->data['MerryParent']['state_id']); 
    print_r($options); 
    foreach ($options as $k=>$v){ 
     echo '<option value="'.$k.'">'.$v.'</option>'; 
    } 

} 

add.ctp

<?php 
echo $this->Session->flash(); 

echo $this->Form->create('Student'); 
echo '<fieldset>'; 
echo '<legend>Student Information</legend>'; 
echo $this->Form->input('Student.name'); 

$options = array('Male'=>'Male','Female'=>'Female'); 
$attributes = array('value'=>'Male'); 
echo $this->Form->radio('Student.gender',$options,$attributes); 

echo $this->Form->input('Student.dob', array('label'=>'Date of Birth', 
       'dateFormat'=>'DMY', 
       'empty'=>'Choose one', 
       'timeFormat' => '', 
      'minYear' => ( 
        date('Y') - 5 
      ), 
      'maxYear' => ( 
        date('Y') - 2 
      ) 
      )); 
echo $this->Form->input('Student.merry_class_id', 
     array(
     'label'=>'Enquiry Class for', 
     'empty'=>'Choose one', 
     'options'=>array('1'=>'Playgroup','2'=>'Nursery','3'=>'LKG', '4'=>'UKG') 
     ) 
     ); 

echo '</fieldset>'; 

echo '<fieldset>'; 
echo '<legend>Parent Information</legend>'; 
//echo $form->input('Student.parent_id', array('type'=>'hidden')); 
echo $this->Form->input('MerryParent.initial', 
array('empty'=>'Choose one', 
'options'=>array('Dr'=>'Dr', 
       'Mr'=>'Mr', 
       'Mrs'=>'Mrs', 
       'Ms'=>'Ms') 
) 
); 
echo $this->Form->input('MerryParent.email'); 
echo $this->Form->input('MerryParent.name', array('label'=>'Parent/Guardian Name')); 
echo $this->Form->input('MerryParent.landline'); 
echo $this->Form->input('MerryParent.mobile'); 
echo $this->Form->input('MerryParent.address'); 
echo $this->Form->input('MerryParent.state_id', array('empty'=>'Choose one','options'=>$states)); 
echo $this->Form->input('MerryParent.city_id'); 
echo $this->Form->input('MerryParent.postal_code'); 
echo '</fieldset>'; 

echo $this->Form->end('Submit'); 
?> 
+0

における機能自動レンダリングのボタンで – jmort253

+0

それは非常に明確ではありません。コードを修正するために質問を編集することを検討してください。また、その変更イベントをドキュメント内で実行してみてください。 – jmort253

+0

はい、変更イベントは、文書内の準備ができています。私のjqueryコードはレイアウトページdefault.ctpのheadセクションにあります。 – vaanipala

答えて

0

私は街のドロップダウンボックス

$this->data['MerryParent']['state_id']=$_GET['state_id']; 

を含めるようにstudents_controller.phpにgetcities機能を変更する場合あり人を得る選択された州の都市と結びついた。

ので、次は修正getcities機能である:

function getcities(){ 
    $this->data['MerryParent']['state_id']=$_GET['state_id']; 
    if (!empty($this->data['MerryParent']['state_id'])){ 
     $cities = $this->Student->MerryParent->City->getCities($this->data['MerryParent']['state_id']); 
    //print_r($cities); 
    foreach ($cities as $k=>$v){ 
     echo '<option value="'.$k.'">'.$v.'</option>'; 
    } 

     /* foreach($cities as $optionValue){ 
      echo '<option>' . $optionValue . '</option>'; 
     }*/ 
    }else{ 
     $this->Session->setFlash('You didn\'t select a state!'); 
    } 

} 

ありがとうございました。偽

0
function formatosDinamicos(){ 
$id_a = $_GET['agente_id']; 
if(!empty($id_a)){ 
    $listaFormato = $FormatoController->listaVariableFormatoDependent($id_a); 
    foreach ($listaFormato as $k=>$v){ 
     echo '<option value="'.$k.'">'.$v.'</option>'; 
    } 
}else{ 
    $this->Session->setFlash('Error!'); 
} 
$this->autoRender = false; 
} 

は、文書内の変更イベントが準備ができていますか? DOMがまだ準備されていないため、変更イベントを登録できない可能性があります。あなたのPHPが終了すると、あなたのJavaScriptが始まる場所
関連する問題