2011-12-08 65 views
0

我試圖弄清楚如何在文本輸入中掩蓋文本,就像它的密碼字段一樣,只有它不是。 這是一個個人的實驗,我unserdtand這可能聽起來很奇怪,但它的東西,我想試試,我已經使用的替代方法來改變字符星號,只有當我提醒值,它會提醒*當星號只應一個面具和警報應該顯示真正的價值,這是否有意義,如果有的話有任何人想法如何做到這一點?掩碼而不是替換?

感謝

回答

0

的「明顯」的解決方案(除了首先使用密碼字段)是有兩個字段,掩碼顯示器領域,並與實際值的隱藏字段:

<input type="text" id="maskField1"> 
<input type="hidden" id="hiddenField1" name="field1"> 

<script> 
$("#maskField1").keyup(function(e) { 
    var newText = this.value.replace(/\*/g,""); 
    $("#hiddenField1")[0].value += newText; 
    this.value = this.value.replace(/[^*]/g,"*"); 
}); 
</script> 

不幸的是,你可以用這個演示中看到:http://jsfiddle.net/PrHuE/它只只要你添加更多的字符到最後作品目前的文字。 A real解決方案是很多比這更復雜,因爲你必須允許用戶在字符串中間添加文本,或者選擇多個字符,然後重寫或明確刪除,或從剪貼板粘貼等。米以上誘捕KEYUP,但用戶可以用鼠標貼,所以......

此外,如果用戶實際類型的一些星號,混淆上面的代碼。

你可以看到,我只是服用任何非星號字符顯示的掩膜場和改變非星號星號之前他們追加到隱藏字段的結束。您可以在這些非星號字符串中找到位置,並將它們插入隱藏字段中的相同位置。這不會太難。但找出哪些字符已被刪除(或替換)會更難,超出了我有時間在這裏。

解決方案2:創建您自己的字體,每個字符看起來像星號,然後將字體嵌入到您的網頁中並在輸入字段中使用它。對於實際上允許這樣做的瀏覽器,它將是一個無代碼解決方案。對於顯然不允許的瀏覽器,它根本無法工作。

0

嗯,這可能不是最好的主意,但是,你總是可以在類型對象發送到一個隱藏的股利和每一段文字的追加。

0

兩種方式浮現在腦海中一個是有實際接收輸入,並在可見的輸入列表中的星號隱藏輸入。另一種方法是替換字符的輸入元素將其保存在一個變量和修改變量當用戶鍵入它之前。

0

這讓人很沒有意義,當你必須做的就是實打實是設置一個簡單的屬性type="password"

這就是說,作爲一個實驗,我甚至不確定你能否正確地做到這一點,因爲需要很多代碼來模擬密碼字段的行爲方式,其中一些可能無法實現。

你將不得不不僅掛接到paste &​​事件,並覆蓋它們的默認行爲(它被插入場跨瀏覽之前可靠地獲取粘貼剪貼板中的數據不是那麼容易的),你必須同時處理字段中文本的全部和部分選擇。

最壞的情況是可能加上糊事件部分選擇。

至少,這是一個不平凡的任務,我懷疑最終的結果會使人感到自豪;)

相關問題