4

ユーザー入力を求める HTML フォームがあります。JavaScript 関数はフォームを検証するためのものであり、PHP コードを実行する前に (onsubmit を使用して) トリガーする必要があります。(ヘッダーでjsファイルを参照しています<script type="text/javascript" src="js/javascript.js"></script>)

ただし、javascript は実行されず、代わりに PHP コードが実行され、(正しく) 新しいファイルが含まれます。

必要に応じてJavaScriptを実行するにはどうすればよいですか?

HTML ファイル:

<form name="details" action="" method="post" 
     onSubmit="return ValidateForm(details);">
...
<input type="submit" name="post-this-form" value="Next"/>
</form>

PHP ファイル:

if (isset($_POST['post-this-form']) and 
     $_POST['post-this-form'] == 'Next')
{
...
some php 
...
include 'shipping-details.html.php';
exit();
}

編集

要求されたJavaScriptは次のとおりです。PHP を使用せずにテストされ、動作しました。(フォームの名前)を渡すことdetailsで、すべてのフォーム フィールドにアクセスできるようにしています。

function ValidateForm(details)
        {
        var firstName=document.forms.details.firstName.value;
        var lastName=document.forms.details.lastName.value;
        var streetAddress=document.forms.details.streetAddress.value;
        var town=document.forms.details.town.value;
        var city=document.forms.details.city.value;
        var zip=document.forms.details.zip.value;
        var country=document.forms.details.country.value;       
        var creditCard=document.forms.details.creditcard.value;                 

                ...

        //Checks firstName
        if ((firstName=="")||(!firstName.match(alphabetExpression)))
            {
            alert ("Invalid first name, please re-enter");
            return false;
            }
                 ...

        //Checks creditCard
        if ((creditCard=="")||(!creditCard.match(numericExpression))||(creditCardLength!=16))
            {
            alert ("Invalid credit card entry, please re-enter");
            return false;
            }       
        }// end function

編集2

私はjavascriptの先頭に追加alert ("Hi");しましたが、アラートが表示されないため、関数がまったく実行されていないと思います。

編集3

この問題は PHP が原因である可能性があるという最初の疑いは間違っていました。Jason がコメントで述べたように、問題は JavaScript 自体にありました。同じ JavaScript コードが、PHP を使用せずにローカル マシン上で「単独で」機能したため、少し奇妙な考えです。考慮すべき要素がたくさんあります...私の問題を調べるために時間を割いてくれてありがとう!

4

2 に答える 2

0

コメントが回答に変換されました

「javascript エラーがあるに違いありません。エラー コンソールを開きます。firefox で ctrl+shift+j を押してください。」

それが役に立ってよかった。

于 2012-04-11T19:44:04.633 に答える