2017-02-16 14 views
0

私はphpを初めて使用しています。送信ボタンを押してもフィールドが消去されないようにしようとしています。まず投稿ボタンをクリックした後にクリアフィールドが表示されなくなった

<?php 
$result = ""; 
class calculator 
{ 
var $a; 
var $b; 

function checkopration($oprator) 
{ 
    switch($oprator) 
    { 
     case '+': 
     return $this->a + $this->b; 
     break; 

     case '-': 
     return $this->a - $this->b; 
     break; 

     case '*': 
     return $this->a * $this->b; 
     break; 

     case '/': 
     return $this->a/$this->b; 
     break; 

     default: 
     return "Sorry No command found"; 
    } 
} 
function getresult($a, $b, $c) 
{ 
    $this->a = $a; 
    $this->b = $b; 
    return $this->checkopration($c); 
} 
} 

$cal = new calculator(); 
if(isset($_POST['submit'])) 
{ 
    $result = $cal->getresult($_POST['n1'],$_POST['n2'],$_POST['op']); 
} 
?> 

    <form method="post"> 
    <table align="center"> 
    <tr> 
     <td><strong><?php echo $result; ?><strong></td> 
    </tr> 
    <tr> 
      <td>Enter 1st Number</td> 
    <td><input type="text" name="n1"></td> 
</tr> 

<tr> 
    <td>Enter 2nd Number</td> 
    <td><input type="text" name="n2"></td> 
</tr> 

<tr> 
    <td>Select Oprator</td> 
    <td><select name="op"> 
     <option value="+">+</option> 
     <option value="-">-</option> 
     <option value="*">*</option> 
     <option value="/">/</option> 
    </select></td> 
</tr> 

<tr> 
    <td></td> 
    <td><input type="submit" name="submit" value="    =    "></td> 
</tr> 

</table> 
</form> 

答えて

1

私は少しあなたのコードをクリーンアップし、クラス名にclearOnReset

<form method="post"> 
    <table align="center"> 
    <tr> 
     <td><strong class="clearOnReset"><?php echo $result; ?></strong></td> 
    </tr> 
    <tr> 
     <td>Enter 1st Number</td> 
     <td><input type="text" name="n1" class="clearOnReset" value="<?php if(isset($_POST['n1'])){echo htmlspecialchars($_POST['n1']);}?>"></td> 
    </tr> 
    <tr> 
     <td>Enter 2nd Number</td> 
     <td><input type="text" name="n2" class="clearOnReset" value="<?php if(isset($_POST['n2'])){echo htmlspecialchars($_POST['n2']);}?>"></td> 
    </tr> 
    <tr> 
     <td>Select Oprator</td> 
     <td> 
     <select name="op"> 
      <option value="+" <?php if(isset($_POST['op']) && $_POST['op']=="+") { echo "selected";}?>>+</option> 
      <option value="-" <?php if(isset($_POST['op']) && $_POST['op']=="-") { echo "selected";}?>>-</option> 
      <option value="*" <?php if(isset($_POST['op']) && $_POST['op']=="*") { echo "selected";}?>>*</option> 
      <option value="/" <?php if(isset($_POST['op']) && $_POST['op']=="/") { echo "selected";}?>>/</option> 
     </select> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     <input type="submit" name="submit" value="    =    "> 
     </td> 
    </tr> 
    </table> 
</form> 
<button onclick="resetCalculator()">reset calculator</button> 
<script> 
function resetCalculator(){ 
    var fieldsToClear = document.getElementsByClassName("clearOnReset"); 
    for(var i = 0; i < fieldsToClear.length; i++){ 
     fieldsToClear[i].value=""; 
    } 
} 
</script> 

すべてのjavascript機能を与える任意の要素をクリアするJavaScript関数を追加し、それがすべて見つかったということですクラス名がclearOnResetの要素は、fieldsToClearという配列に配置されます。その下の行は、その配列のすべての要素を通り、その値を""に設定します。これは基本的には何もありません。特定のPOSTリクエストのパラメータが設定されている場合

PHPコードアイブはチェックを追加し、その形でそれぞれの位置に配置した場合、あなたはまだ不明な点がございましあるいは気付いた場合は

私のコードに問題が気軽にこの答えの下にコメントを書いてください。

+0

フィールドは、送信ボタンを押すと自動的にクリアになります。それは実際には主な問題です – maria

+0

あなたの質問を間違って読んでいるようですので、5分後にチェックして、病気が私の答えを編集した –

+0

たとえば、フィールドn1に4を入力し、フィールドn2に5を入力し、フィールドから5が消えて、答えが残っています。私は彼らに行ってほしくない。だから私が試みているのは、リセットボタンを押したときです。n1とn2を0に設定する必要があります。実際の値を4と5にしておかなければなりません。 – maria

0

Uはjqueryのライブラリファイルを追加し、名前のリセットなどのリセットボタンにIDを追加する必要があります。私はそれがここに意味をなさないコードであり、そしてあなたはそれに感謝を解く方法を説明してください願っています。 その後

$(document).ready(function(){ 

     $("#reset").click(function(){ 
      $("input[type='text']").val(''); 
     }) 
    }) 
+0

私のためには機能しませんでした。どのように実装しました – maria

+0

jqueryライブラリファイルを追加しますか? –

+0

ええ、私はそれをインポート