0

ユーザーの詳細を取得し、ファイルをアップロードできるフォームがあります。ファイル名と情報は csv ファイルに保存されます。

ユーザーがすべてのフィールドに入力していない場合、フォームは入力して再試行するよう求めます。ユーザーが入力した値を記憶させたかったので、php を使用してフォーム フィールドのデフォルト値を設定しました。

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

どこで $fulltitle = $_POST['fulltitle'];

ただし、ユーザーが送信に失敗した場合、リセットを押してもフォームはクリアされず、以前の試行が返されます。

リセット機能を動作させるにはどうすればよいですか? 使ってみたリセットボタンで

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

しかし、リセットを押すまでにPHPがすでに処理されているため、効果がないようです。

誰にも何か提案がありますか?


編集:

助けてくれてありがとう、提案されたように簡単なリロードでこれを解決しました。問題への答えを探している人のために:

私が入れたリセットボタンの代わりに:

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

ファイル resetform.php には次のものがあります。

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

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

submitfile.php はフォームです

/編集


トリミングされたコードは次のとおりです...

ヘッダ:

<?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 = '' ;
    }

?>

体:

<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>

4

1 に答える 1

2

リセットを押すと、フォームが元の値にリセットされます。あなたの場合、それはvalue属性で設定しているものであるため、元のフォーム送信値です。ユーザーに空白のフォームを表示する場合は、JavaScript を使用してフォームの値を完全に削除する必要があります。

これを実行する JavaScript スニペットを次に示します。

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 = '';
    }

}

次に、これをリセットボタンに入れます:

onclick="clear_form_elements(this.form[0])"
于 2012-04-11T19:19:33.437 に答える