2012-02-11 34 views
5

如果用戶實際點擊'rember頁面密碼'(瀏覽器,而不是網站功能),瀏覽器記住用戶和密碼信息是正常的事情。讓瀏覽器記住動態生成表單中的輸入字段值

我有我產生使用異步調用此登錄表單,像這樣:

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

在這種形式下,即使我點擊提交的瀏覽器不記得(和自動填充這對我來說)時'是的,記住密碼'。

這是否意味着只有可鏈接的頁面表單纔會被記住?

編輯 - 輸出例如

<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輸出嗎? – 2012-02-11 21:21:48

+2

這是標準行爲。所以這就是我們使用動態生成的登錄表單的原因,如果我們希望用戶無法存儲pw – 2012-02-11 21:28:42

+0

對不起,你是對的,edditing問題 – 2012-02-11 21:31:16

回答

2

我發現在Firefox的密碼管理工作的解決方案。根據您爲何動態加載表單,我的解決方案可能會幫助您,也可能無法幫助您。 (更多關於下面的內容。)

首先,在使用相同方法和動作的頁面上放置一個隱形窗體(我使用了「display:none」的內聯風格),並且包含具有相同名稱的字段。你可以把這個最終將包含真正形成股利如下:

<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中,真正形式的內容已經被加載後,複製值出假表格,並把它們進入真正的一個:

<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> 

這就是說,如果你正在經歷這麼多的努力,把網頁上的表單你動態加載實際的形式之前,那麼爲什麼不直接刪除最後一個步驟,並有在頁面上的形式開始? :-)大概你有這樣做的好理由。也許來自服務器的表單具有獨特的樣式信息,或字段旁邊的動態錯誤消息或國際化域名?但是,如果從服務器拉出的表單對不同的用戶有不同的操作,那麼我的技巧將無法工作,因爲您在構建隱藏表單時必須事先知道該操作。

如果是這種情況,那麼也許你可以嘗試我的訣竅,並隱藏從服務器加載的「真實形式」並向用戶顯示僞造表單。假表單可以發佈到一個不存在的URL,但是你可以使用JavaScript截獲「假表單」的提交內容,將用戶名和密碼複製到不可見的「真實表單」中,然後調用實際表單提交,返回false以防止原始表單提交通過。

更新:想着它多一點,我不認爲我的第二個解決方案將工作,因爲密碼管理與最終URL的用戶名和密碼,你實際上的數據提交到幾乎可以肯定關聯後,而不是表單中的初始操作網址,您只會首先將假裝提交給。無論如何,希望我的第一個解決方案能夠滿足你的要求。

+0

我結束了第二種方式。只需在隱藏的div中加載表單,然後使用javascript顯示(不帶任何加載)。更簡單一些。謝謝你的幫助! – 2012-02-25 17:11:23

相關問題