2012-02-11 14 views
5

ユーザーが実際に「リバーページパスワード」(ブラウザではなくウェブサイト機能)をクリックした場合、ブラウザとパスワード情報を覚えておくのが普通です。動的に生成されたフォームの入力フィールド値をブラウザに記憶させる

は、私のような、何か私は非同期呼び出しを使用して生成し、このログインフォームを持っている:

$('#container').load('/path/file.php?what=login_form'); 

この形式では、覚えている(と私のためにそれを自動入力)していないブラウザを提出したとき、私はクリックした場合でも、 「はい、パスワードを覚えています」。

これは、URL可能なページフォームのみが記憶されることを意味しますか?

EDIT - 出力例

<div class="caja loginBox"> 
     <form action="index.php" method="post" name="sesion" id="sesion"> 
     <h1>Inicio de sesion</h1><h2>Usuario</h2> 
    <input type="text" id="nombre" name="nombre"/> 
    <h2>Password</h2><input type="password" id="pass" name="pass"/><button type="submit" name="inicio">Entrar</button> 
    </form> </div> 
+0

''/path/file.php?what = login_form'' HTML出力を投稿できますか? –

+2

これは標準的な動作です。私たちが動的に生成したログインフォームを使用している理由は、ユーザがpwを保存することができないようにするためです。 –

+0

申し訳ありませんが、あなたは正しいですか?変更を編集する –

答えて

2

私はFirefoxのパスワードマネージャと連携し解決策を見つけました。フォームを動的にロードする理由に応じて、私のソリューションはあなたに役立つかもしれません。 (後で詳しくはこちら)

最初に、同じメソッドとアクションを使用し、同じ名前のフィールドを含むページに非表示のフォーム(「表示:なし」のインラインスタイルを使用)を配置します。

<div id="container"></div> 

<div id="fake-form" style="display: none"> 
    <form action="index.php" method="post"> 
     <input type="text" name='nombre' class='nombre'/> 
     <input type="password" name='pass' class='pass' /> 
    </form> 
</div> 

次に、あなたのJavaScriptで、実際のフォームの内容がロードされた後、偽のフォームから値をコピーして、それらを置く:あなたは最終的に、実際のフォームが含まれていますdivの下にこれを置くことができます実際の一つに:

あなたが動的に実際のフォームをロードする前に、ページ上のフォームを置くためにこれだけの努力によってつもりなら、なぜちょうどその最後のステップを削除していない、と述べた
<script type="text/javascript"> 
    $(function() { 
     $("#container").load("/path/file.php?what=login_form", function() { 
      var fakeForm = $("#fake-form"); 
      $("#nombre").val(fakeForm.find(".nombre").val()); 
      $("#pass").val(fakeForm.find(".pass").val()); 
     }); 
    }); 
</script> 

最初のページにフォーム? :-)おそらくあなたはこれを行うための正当な理由があります。おそらく、サーバーからのフォームに固有のスタイリング情報、またはフィールドの横にある動的なエラーメッセージ、またはi18nフィールド名がありますか?

ただし、サーバーから引き出しているフォームにユーザーごとに異なるアクションがある場合は、隠されたフォームを作成するときにアクションを事前に知っておく必要があるため、私のトリックは機能しません。

もしそうなら、あなたは逆に私のトリックを試して、サーバーからロードして偽のフォームをユーザーに表示する「リアルフォーム」を隠すことができます。偽のフォームは存在しないURLに投稿することができますが、JavaScriptを使用して「偽のフォーム」の受信を傍受し、ユーザー名とパスワードを不可視の「実際のフォーム」にコピーし、実際のフォームで送信し、元のフォームの送信が行われないようにするにはfalseを返します。

更新:パスワードマネージャは、ほぼ間違いなくあなたが実際にデータを提出し、最終的なURLでユーザ名とパスワードを関連付けるので、もう少しそれについて考えた後、私は、私の第二の溶液が働くだろうとは思いません最初のアクションURLではなく、最初にと書かれたのふりをするだけのフォームになります。とにかく、うまくいけば私の最初の解決策は、あなたがやっていることにふさわしいでしょう。

+0

私はそれを第2の方法でやってしまった。隠れたdivにフォームをロードして、javascriptで(ロードなしで)表示します。方法は簡単です。ご協力いただきありがとうございます! –

関連する問題