-1

HTML フォームに JavaScript を実装するのに苦労しています。全体を通して多くのPHPを使用しています。投稿しようとしているコードは、ユーザーがアクセスする別のページに含まれています。phpページです。

フォームには現在、formposts.php に送信する action= が含まれていません。JavaScript が無視され、JavaScript をチェックする前にフォームが送信されたかどうかを確認するために取り出しました。しかし、何もしなくても、私のフォームは JavaScript に応答しません。

詳細に入る前に、動作するかどうかを確認するためだけに、単純な形式の JS を使用しました。これを機能させる方法について、本当に助けが必要です。問題がどこにあるのかわかりません!!

フォームを開くときと閉じるときのスクリプト呼び出しを含めました。onsubmit // onclick テキストを表示するラベルも含めてみました。JS はコードの最後にあります。一部のテキスト/スクリプトは無視できます。フォームの開始、最初の 3 つの入力タイプ、フォームの終了、および JS が含まれていると思います。長いので一部抜粋しました。

    <p><?php echo $session->getText("profileInfo",$language); ?></p>

<table width="530" border="0">
  <tr>
    <th scope="col" width="40%"><form enctype="multipart/form-data" method="POST" onsubmit="return checkForm()" name="registration">
                                <img src="<?php echo $userDetails['picUrl']; ?>" border="none"> ;</th>
    <th scope="col" width="60%"><h3><?php echo $session->getText("profileMenuPersonal",$language); ?></h3></th>
  </tr>
  <tr>
    <td><h4><?php echo $session->getText("regPic",$language); ?></h4></td>
    <td><input type="file" name="uploaded" id="uploaded" onblur="checkType()"  /> <label id="picMSG"></label> </td>
  </tr>
  <tr>
    <td><h4><?php echo $session->getText("regFname",$language); ?></h4></td>
    <td><input type="text" id="firstName" name="firstName" value="<?php echo $userDetails['firstName']; ?>" /></td>
  </tr>
  <tr>
    <td><h4><?php echo $session->getText("regLname",$language); ?></h4></td>
    <td><input type="text" id="lastName" name="lastName" value="<?php echo $userDetails['lastName']; ?>" /></td>
  </tr>
<tr>   <!--  I have taken some code out for readability of this post -->
    <td><input type="hidden" id="reqtype" name="reqtype" value="personalDetails"  />
        <input type="hidden" id="realUserId" name="realUserId" value="<?php echo $realUserId; ?>" /></td>            
    <td><input type="submit" name="submit" value="update / save" class="button" onclick="return checkForm()" />
        </form>
    </td>
  </tr>
</table>

<script type="text/javascript">

    function checkForm()
    {
        var picture = document.getElementById('uploaded').value;
        var firstName = document.getElementById('firstName').value;
        var lastName = document.getElementById('lastName').value;
        var email = document.getElementById('email').value;
        var address1 = document.getElementById('address1').value;
        var address2 = document.getElementById('address2').value;
        var postCode = document.getElementById('postCode').value;
        var email = document.getElementById('email').value;
        //      files types that r not allowed
        //      And are considered harming - 
        //      someone purposfully trying to harm the system
        var str1 = ".php"; 
        var str2 = ".js";
        var str3 = ".html"; 
        if(!document.registration.firstName.value)
        {
            alert('please enter name');
            return false;
        }
        if(picture.indexOf(str1) != -1 || picture.indexOf(str2) != -1 || picture.indexOf(str3) != -1)
        { 
            alert("You have tried to upload content that may harm our system. The admin has been contacted and your account flagged. You may be deleted."); 
            return false;
        }
        // allowed file types
        var str1 = ".jpeg"; 
        var str2 = ".gif";
        var str3 = ".png";
        if(picture.indexOf(str1) != -1 || picture.indexOf(str1) != -1 || picture.indexOf(str1) != -1 )
        {
            return true;
        }else{
                alert("We only allow jpeg, gif and png files to be uploaded."); 
                return false;
        }

    }
    function checkType()
    {
        var picture = document.getElementById('uploaded').value;
        var element = document.getElementById('picMSG').value
        //      files types that r not allowed
        //      And are considered harming - 
        //      someone purposfully trying to harm the system
        var str1 = ".php"; 
        var str2 = ".js";
        var str3 = ".html"; 
        if(picture.indexOf(str1) != -1 || picture.indexOf(str2) != -1 || picture.indexOf(str3) != -1)
        { 
            element.innerHTML = "invalid type";
            element.style.color = "red";
        }
        // allowed file types
        var str1 = ".jpeg"; 
        var str2 = ".gif";
        var str3 = ".png";
        if(picture.indexOf(str1) != -1 || picture.indexOf(str1) != -1 || picture.indexOf(str1) != -1 )
        {
            return true;
        }else{

        }
    }
</script>

私の「単純な」JSが無視されている理由を誰かが知っていますか??

私はPHPとJSが初めてです。しかし、これは簡単な作業だと思っていたでしょう。私は何をしていますか?

4

3 に答える 3

1

これは私のワイルドな推測です...コードをビットに取り除いた後... http://jsfiddle.net/VVYR3/15/

送信ボタンを次のように変更します。

onclick="checkForm()"代わりにonsubmit="return checkForm()"(このビットが機能するようになったら、さらに実験できます)

最も重要なことは、スクリプトをフォームの後に配置するのではなく、フォームに配置することです。<HEAD>

于 2012-04-17T15:54:05.507 に答える
0

私はあなたがこれをしなければならないと仮定します

<input type="submit" name="submit" value="update / save" class="button" onclick="checkForm()" />

それ以外の

<input type="submit" name="submit" value="update / save" class="button" onclick="return checkForm()" />


変更してみてください

if(!document.registration.firstName.value)

の中へ if(firstName == "")

そして(毎)

picture.indexOf(str1) != -1

の中へ picture.search(str1) == -1


動作するかどうかを確認してください >.>

于 2012-04-17T15:45:26.627 に答える
0

コードの一部を削除したため、デバッグするのは少し難しいですが、とにかく試してみましたが、送信時にcheckFormが呼び出されました。失敗します

var email = document.getElementById('email').value;

値を見つけるための「email」の id を持つ要素がないためです。

ただし、検証はやや雑です。jpg.exe というファイルはどうでしょうか。コードが現在のように通過します。

車輪の再発明をせず、代わりにテスト済みのフレームワークを使用することを検討しましたか? それらはたくさんあり、素晴らしい派手な ajax 機能さえ備えています。このように: http://valums.com/ajax-upload/

于 2012-04-17T15:39:12.960 に答える