1

こんにちは、次の問題があります。

2 つの入力フィールドがあります。1 つはログイン ユーザー名用で、もう 1 つはパスワード用です。ここで、両方のフィールドの値を設定したいと思います。私の問題はパスワードです。私の意図は次のとおりです。

HTML:

<input 
type="text"
id="log_password" 
name="log_password" 
value="<?php echo ($log_password);?>" 
onfocus="if(this.value=='Password')this.value='';this.type='password'"
onblur="if(this.value=='') this.value=this.defaultValue;"/>

PHP:

$log_password = "Password";

if(isset($_POST['submit'])){

    $log_password = $_POST['log_password'];

        if(empty($log_password)){
            $errors['log_password'][]="No password given";
            $_POST['log_password'] = "Password";
            $log_password = $_POST['log_password'];
    }       
}

問題は、これがフォームが送信される時点まで機能することです。エラーが発生した場合、type="text"タグによりパスワードが再び表示されます。どうすればこれを解決できますか。私を助けてくれる人がいれば、本当に感謝しています。どうもありがとう。

アップデート:

<div class="small2"> 
<?php if (!isset($errors['log_password'])):?>
<input 
type="<?= $passwordVal == "" ? "text" : "password" ?>" 
id="log_password" name="log_password" 
value="<?php echo ($log_password);?>" 
placeholder="Passwort" 
onfocus="if(this.value=='Passwort')this.value=''" 
onblur="if(this.value=='') this.value=this.defaultValue;"/>
<?php endif;?>

<?php if (isset($errors['log_password'])):?>
<input class="log-err" 
type="<?= $passwordVal == "" ? "text" : "password" ?>" 
id="log_password" name="log_password" 
value="<?php echo ($log_password);?>" 
placeholder="Passwort" 
onfocus="if(this.value=='Passwort')this.value=''" 
onblur="if(this.value=='') this.value=this.defaultValue;"/>
<?php endif;?>
</div>
4

5 に答える 5

2

使用する

<input type="password" placeholder="Password" ... />

これをテキスト フィールドとして使用する必要がある場合(「パスワード」を表示するため)、入力タイプを条件付きにする必要があります。

<?php
    // in case of error, the value that the user entered will be passed back via GET (POST?)
    $passwordVal = isset($_GET['log_password']) ? $_GET['log_password'] : "";
?>

<!-- if ($passwordVal) is an empty string, type is "text", else type is "password". -->
<input type="<?= $passwordVal == "" ? "text" : "password" ?>" ... />
于 2012-07-30T18:48:42.750 に答える
2

Matt が正しく示唆しているように、プレースホルダータグを使用できます。

ただし、プレースホルダーを機能させるために、「値」を設定することはできません。もちろん、解決策は条件付き型を使用するか、jQuery フレームワークで遊ぶことです。あなたはこのようなことをすることができます..

<?
    $your_pass = 'bla-bla-bla';
?>
<!DOCTYPE html>
<html>
    <head>
        <title>Test page</title>
        <!-- Load jQuery library from Google repository -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    </head>
    <body>
        <form action="#">
            <input type="password" name="log_password" id="log_password" />
        </form>
    </body>
    <script>

        $(document).ready(function() {
            /* execute this by jQuery when document is ready */

            /* must use traditional javascript to change input's type attribute */
            document.getElementById('log_password').setAttribute('type', 'text');

            /* set empty value attribute of input with id "log_password" */
            $('input#log_password').attr('val','');

            /* set placeholder attribute */
            $('input#log_password').attr('placeholder','Password');

            $('input#log_password').focus(function(){
                /* when input with id log_password is focus.. */
                $(this).attr('placeholder','');

                /* set the value as you prefer... */
                $(this).val('<?=$your_pass?>');

                /* reset type of input to password */
                document.getElementById('log_password').setAttribute('type', 'password');
            });
        });
    </script>
</html>
于 2012-07-30T19:21:55.080 に答える
0

エラーがある場合は、タイプを「テキスト」から「パスワード」に変更する必要があると思います

于 2012-07-30T18:51:12.737 に答える
0

関数とみなしたコードを記述し、ページのロード、フォーカス イベント、ブラー イベントで呼び出します。Matt の解決策は素晴らしいですが、HTML5 をサポートするブラウザーに限定されていると思います。

于 2012-07-30T18:58:03.190 に答える
0

log_password 値がパスワードであるかどうかを確認し、タイプを変更する準備ができているドキュメントのスクリプトはどうですか。

ああ、すみません、destの投稿を見てください

于 2012-07-30T19:53:04.023 に答える