2012-04-11 8 views
0

Ich habe ein Formular, das einige Benutzerdetails annimmt und ihnen ermöglicht, eine Datei hochzuladen. Die Dateinamen und Informationen werden in einer CSV-Datei gespeichert.Löschen Sie ein Formular, das Werte merkt

Wenn der Benutzer nicht alle Felder ausfüllt, werden sie im Formular aufgefordert, sie auszufüllen und es erneut zu versuchen. Ich wollte es die Werte erinnern, der Benutzer eingegeben hat, so dass ich den Standardwert der Formularfelder mit PHP:

value="<?php print $fulltitle;?>" 

wo $ fulltitle = $ _POST [ ‚fulltitle‘];

Wenn der Benutzer jedoch etwas erfolglos absetzt, wird das Formular durch Drücken von Zurücksetzen nicht gelöscht, und die vorherigen Versuche werden zurückgegeben.

Wie kann ich die Reset-Funktion funktionieren lassen? In der Reset-Taste habe ich versucht,

onclick="<?php $fulltitle='' ?>" 

zu verwenden, aber es scheint keine Wirkung zu haben, denke ich, weil die PHP bereits durch die Zeit, die Sie Reset getroffen verarbeitet wird.

Wer hat irgendwelche Vorschläge?


EDIT:

Danke für die Hilfe, ich löste dies mit einem einfachen reload wie vorgeschlagen. Für alle, die eine Antwort auf das Problem der Suche:

Anstelle einer Reset-Taste setzen I:

<FORM METHOD="LINK" ACTION="resetform.php"> 
<INPUT TYPE="submit" VALUE="Reset"> 
</FORM> 

In der Datei resetform.php ich habe:

<?php 
$firstname = '' ; 
$lastname = '' ; 
$fulltitle = '' ; 
$email = '' ; 
// etc. 

header("Location: submitfile.php"); 
?> 

wo submitfile. PHP ist die Form

/EDIT


getrimmte Code folgt ...

Rubrik:

<?php 
//error_reporting(E_ALL & ~E_NOTICE); 
$message = false; 

if(isset($_POST['Submit'])){ 

//user input with commas and < stripped: 
    $firstname = str_replace("<","",str_replace(",",";",$_POST['firstname'])); 

//if values missing, dont process: 
    if(empty($firstname)){ 
     $message = '<span style="color:red;text-align:center;">Please complete all required(*) fields,<br />and check the file has been selected correctly.</span>'; 
     $aClass = 'errorClass'; 
    } 

else { 
    //return data array cvsData from user input 

    $cvsData = $firstname 
    fwrite($fp,$cvsData); 
    fclose($fp); 
    //reset form 
    $firstname = '' ;   
    $message = '<span style="color:blue;text-align:center;">Submission successful, thank you.</span>'; 
    } 

} 
//if page reloaded, clear form: 
else { 
    $firstname = '' ; 
    } 

?> 

Körper:

<form enctype="multipart/form-data" id="form1" name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>" > 
<table> 
<?php 
if ($message != false) 
    { 
    print "<tr><td colspan='2'><span align='center'>" . $message . "</span></td></tr>"; 
    } 
?> 

<tr> 
    <td width="200"><span class="texto">*First Name(s)</span></td> 
    <td><input type="text" name="firstname" id="firstname" value="<?php print $firstname;?>" /></td> 
</tr> 

<tr> 
    <td colspan="2"> 
     <div align="center"> 
      <input type="submit" name="Submit" id="Submit" value="Submit"/> 
      <input type="reset" name="Reset" id="Reset" value="Reset" /> 
     </div> 
    </td> 
</tr> 
</table> 

+0

Ich bin ziemlich sicher, ein perfektes Betrogene dieser irgendwo gibt. Aber in der Zwischenzeit, siehe: http: // stackoverflow.com/questions/10001844/how-to-reset-a-form-das-verwendet-sticky-values ​​und http://stackoverflow.com/questions/680241/resetting-a-multi-stage-form-with-jquery – NullUserException

+0

Entschuldigung für dupe, ich habe versucht, aber konnte die Frage nicht gut genug in Google Ausdrücken :) – ralph346526

Antwort

2

Schlagen zurückgesetzt wird zurückgesetzt einfach das Formular, um es ursprünglichen Werte ist. In Ihrem Fall handelt es sich um die ursprünglichen Werte für die Formularübergabe, da Sie dies im Attribut value festlegen. Sie müssen JavaScript verwenden, um die Formularwerte vollständig zu löschen, wenn Sie dem Benutzer ein leeres Formular präsentieren möchten.

Hier ist ein JavaScript-Schnipsel, die es tun sollen:

function clear_form_elements(ele) { 

    tags = ele.getElementsByTagName('input'); 
    for(i = 0; i < tags.length; i++) { 
     switch(tags[i].type) { 
      case 'password': 
      case 'text': 
       tags[i].value = ''; 
       break; 
      case 'checkbox': 
      case 'radio': 
       tags[i].checked = false; 
       break; 
     } 
    } 

    tags = ele.getElementsByTagName('select'); 
    for(i = 0; i < tags.length; i++) { 
     if(tags[i].type == 'select-one') { 
      tags[i].selectedIndex = 0; 
     } 
     else { 
      for(j = 0; j < tags[i].options.length; j++) { 
       tags[i].options[j].selected = false; 
      } 
     } 
    } 

    tags = ele.getElementsByTagName('textarea'); 
    for(i = 0; i < tags.length; i++) { 
     tags[i].value = ''; 
    } 

} 

diese dann in Ihrer Reset-Taste setzen:

onclick="clear_form_elements(this.form[0])" 
+0

Danke, würde ich die Funktion mit dem Reset-Button "onclick" -Eigenschaft nennen oder gibt es einen besseren Weg? – ralph346526

+0

Die andere Option ist nur die Seite neu zu laden (und PHP in seiner ursprünglichen Form ausgeben lassen). – NullUserException

+0

So etwas ähnliches? ralph346526

Verwandte Themen