2009-06-15 10 views
0

Ich arbeite an einem Berichtskartensystem. Ich erstelle ein Formular, in dem wir den Klassennamen, das Sitzungsjahr und die Nummer des Abschnitts und seinen Namen hinzufügen können. Für die Sitzung haben wir Javascript Datepicker verwendet. Um den Namen des Abschnitts hinzuzufügen, verwende ich Ajax.Warum wird mein Formular nicht korrekt in Mozilla eingereicht, aber es funktioniert in IE7?

Meine Controller-Klasse ist addclasses_controller.php

<?php 
    class AddclassesController extends AppController 
    { 
     var $name='Addclasses'; 
     var $helpers = array('Html', 'Javascript', 'Ajax'); 
     var $components = array('Auth', 'RequestHandler'); 
     var $uses=array('Addclass','User'); 


     function add() 
     { 
      $this->layout = 'internal'; 
      debug($this->data); 
     } 


     function addsection() 
     { 
      $noofsection=$this->data['Addclass']['section']; 
      $this->set('noofsection',$noofsection); 
     } 

    } 
?> 

und die Modellklasse Name ist addclass.php

und in der Ansicht Abschnitt, die add.ctp

<table cellpadding="0" cellspacing="0" width="100%"> 
    <tr> 
    <td colspan="3">Add Class 
    </tr> 
    <tr> 
    <td colspan="3"> 
    </tr> 
<?php echo $form->create('Addclass', array('url' => array('controller' => 'addclasses', 'action' => 'add'))); ?> 
    <tr> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
    </tr> 
    <tr> 
    <td>Class Name</td> 
    <td></td> 
    <td><?php echo $form->text('classname',array('class' => 'users')); ?></td> 
    </tr> 
    <tr> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
    </tr> 
    <tr> 
    <td>Session Calender</td> 
    <td><input type="text" name="data[Addclass][sdate]" id="AddclassSdate" size="13" datepicker="true" datepicker_format="DD/MM/YYYY" value="<?php echo date('d/m/Y'); ?>"></td> 
    <td><input type="text" name="data[Addclass][edate]" id="AddclassEdate" size="13" datepicker="true" datepicker_format="DD/MM/YYYY" value="<?php echo date('d/m/Y'); ?>"></td> 
    </tr> 
    <tr> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
    </tr> 
    <tr> 
    <td>The Number of Section which you want to add</td> 
    <td></td> 
    <td><?php echo $form->text('section',array('class' =>'users')); ?></td> 
    </tr> 
<?php echo $ajax->observeField('AddclassSection',array('url' => array('controller'=>'addclasses', 'action' =>'addsection'),'frequency' => 0.2,'onChange'=>true,'update'=>'employers'));?> 
    <tr> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
    <td>&nbsp;</td> 
    </tr> 
    <tr> 
    <td colspan="3"><div id="employers"></div></td> 
    </tr> 
    <tr> 
    <td colspan="3" ><?php echo $form->end('Submit');?></td> 
    </tr> 
</table> 

und die addsection.ctp

<table cellpadding="0" cellspacing="0" width="80%" align="center"> 
<?php 
    for($i=1; $i<=$noofsection; $i++) { 
     $section="AddclassSec".$i; 
     $arr="sec".$i; 
     $section_name ="data[Addclass][$arr]"; 
?> 
    <tr> 
     <td>Section-<?php echo $i?></td> 
     <td></td> 
     <td><input type="text" id="<?php echo $section ?>" value="" class="users" name="<?php echo $section_name ?>"/></td> 
    </tr> 
    <tr> 
     <td colspan="3">&nbsp;</td> 
    </tr> 
<?php } ?>  
</table> 

wenn ich die Daten abschicken, überprüfen Sie es und drucken Sie dann die Daten in Mozilla, ich finde keine Sitzung Kalenderdaten oder den Namen des Abschnitts. Aber in IE7 funktioniert es richtig. Warum?

Antwort

0

Für Debugging-Zwecke könnten Sie versuchen, Ihre Form ein wenig zu vereinfachen. Ich habe nicht überprüft, aber es gibt eine Menge Tabellen-HTML in Ihrem Formular, die es möglicherweise brechen, so dass es nicht eingereicht wird. Das ist das Einzige, was mir momentan einfällt.

1

In add.ctp verschieben Sie den $ form-> create-Aufruf vor das Tag der offenen Tabelle und den $ form-> end-Aufruf nach dem Tag der close-Tabelle. Die Kombination von Firefox, Ajax und Formularinhalten in Tabellen ist problematisch.

Verwandte Themen