1

ウェブショップに登録できるこの .php ドキュメントがあります。JavaScript の検証を追加したいのですが、サイトは完全に .php で構成されているため、html の head タグと body タグはありません。通常、javascript ソースを head タグに入れることができますが、.php ではできません。(または、少なくとも方法はわかりません)コードをテストするとき、javascript ドキュメントは問題ないように見えますが、.php ドキュメントに入れると、(") と (') に関する特定のエラーが発生します。リンクしようとすると別の javascript ドキュメントに対して、コードはまったく機能していないようです。

(私は全体の php ページを追加しました) PHP ドキュメントの開始:

<?php

include 'header.php';
include 'menu.php';

    echo '

function checkEmail(myForm) 
{
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(registration.emailAddress.value))
    {
    return (true)
    }
        alert("Invalid E-mail Address! Please re-enter.")
        return (false)
}

function validatePwd() 
{
    var invalid = " "; // Spatie mag niet
    var minLength = 6; // Minimaal 6 tekens
    var pw1 = document.registration.password.value;
    var pw2 = document.registration.passwordConfirm.value;
// Beide velden gelijke waarde
    if (pw1 == "" || pw2 == "") 
    {
        alert("Please enter your password twice.");
        return false;
    }
// Minimale lengte variabele
    if (document.registration.password.value.length < minLength) 
    {
        alert("Your password must be at least " + minLength + " characters long. Try again.");
        return false;
    }
// spatiegebruik variabele
    if (document.registration.password.value.indexOf(invalid) > -1); 
    {
        alert("Spaces are not allowed.");
        return false;
    }

    else 
    {
    if (pw1 != pw2) 
        {
        alert ("You did not enter the same new password twice. Please re-enter your password.");
        return false;
        }
    else 
    {
        return true;
    }
    }
}

        <div id="main">

    <form name="registration" action="registerconfirm.php" method="post" id="form" onSubmit="return validatePwd()">


        <h2>Personal Information</h2>


        <fieldset class="login_register">


            <label for="firstName" class="form">First name:</label> 

                <div class="registrationForm" id= "firstNameCheck"></div>

                    <input type="text" name="firstname" id="register_first_name"/>


            <label for="lastName" class="form">Last name:</label>

                <div class="registrationForm" id="lastNameCheck"></div>

                    <input type="text" name="lastname" id="register_last_name"/>


            <label for="email" class="form">E-mail:</label>

                <div class="registrationForm" id="emailCheck"></div>

                    <input type="text" name="emailAddress" id="register_email"/>


        </fieldset>


        <h2>Login Information</h2>

        <fieldset class="login_register">


            <label for="password" class="form">Password:</label>

                <div class="registrationForm" id="lastNameCheck"></div>                 

                    <input type="password" name="password" id="password"/>


            <label for="passwordCheck" class="form">Confirm password:</label>

                <div class="registrationFormAlert" id="divPassCheck"></div>

                    <input type="password" name="passwordConfirm" id="passwordConfirm"/>


            <input type="submit" class="button" value="SUBMIT"/>

        </fieldset>

    </form>

</div>

';

include 'footer.php';

?>

そしてJavascriptコード:

<SCRIPT LANGUAGE="JavaScript">

function checkEmail(myForm) 
{
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(registration.emailAddress.value))
    {
    return (true)
    }
        alert("Invalid E-mail Address! Please re-enter.")
        return (false)
}

function validatePwd() 
{
    var invalid = " "; // Invalid character is a space
    var minLength = 6; // Minimum length
    var pw1 = document.myForm.password.value;
    var pw2 = document.myForm.passwordConfirm.value;
// check for a value in both fields.
    if (pw1 == '' || pw2 == '') 
    {
        alert('Please enter your password twice.');
        return false;
    }
// check for minimum length
    if (document.myForm.password.value.length < minLength) 
    {
        alert('Your password must be at least ' + minLength + ' characters long. Try again.');
        return false;
    }
// check for spaces
    if (document.myForm.password.value.indexOf(invalid) > -1) 
    {
        alert("Sorry, spaces are not allowed.");
        return false;
    }

    else 
    {
    if (pw1 != pw2) 
        {
        alert ("You did not enter the same new password twice. Please re-enter your password.");
        return false;
        }
    else 
    {
        return true;
    }
    }
}

4

3 に答える 3

1

いくつかのこと:<script>タグは好きな場所に追加できます。ただし、属性languageは実際には存在しませんが、それほど重要ではありません。それでも、それは<script type="text/javascript">.
サイトが (多数の) PHP スクリプトの出力である場合、単純echoにスクリプトではないのはなぜでしょうか?

echo '<script type="text/javascript" src="path/to/script.js"></script>';

または、ヘッダー ファイルで次のように指定します。

    echo '<title>Title</title>';
?>
<script type='text/javascript'>
    var script ='just add it here';
</script>
<?php
    echo '</head>';//continue php

これを行うことを妨げるものは何もありません。

于 2013-01-30T11:48:45.273 に答える
1

JavaScript はクライアントのブラウザー (別名、クライアント側) で実行され、PHP はサーバー側の言語です。

PHP 用の JS インタープリターを作成する予定がない限り、PHP から JS を実行することはできません。
より良いオプションは、PHP で JS を書き直すことです。


ファイルのインクルードに問題がない限り、:
<script type="text/javascript" src="myJSFile.js"></script>タグを編集してheader.php.

そう:

echo '<script type="text/javascript" src="myJSFile.js"></script>';
于 2013-01-30T11:46:59.117 に答える
0

PHP の HEREDOC 構文を使用して関数を出力してみてください。 http://www.php.net/manual/it/language.types.string.php#language.types.string.syntax.heredoc

于 2013-01-30T11:48:45.217 に答える