2015-09-25 88 views
8

我已經構建了一個文本框下拉式AngularJS組件,該組件在Chrome,Firefox,Safari和Internet Explorer中非常適用。在Edge中禁用輸入文字建議?

此組件的一個功能是您鍵入一個字符串,然後可以使用向上/向下箭頭鍵滾動瀏覽建議。

在微軟的邊緣,只要你打的向下箭頭,下面的文本添加到輸入框:

簡單介紹一下您的更改(正確拼寫,固定的語法,提高格式化)

有什麼我可以做客戶端來阻止這種情況發生?

<form> 
 
    <input type="text" />  
 
</form>

爲了證明這一點,運行上面剪斷,類型的東西到文本框中,然後按下向下箭頭兩次邊緣。我希望這不會發生,因爲它會破壞我的自動完成功能!

感謝

+0

你在使用輸入嗎?如果不是,你使用什麼類型的元素?您是否試圖通過任何方式解決此問題或使用Angular.js解決方案? – rockmandew

+0

構建組件的bog標準文本輸入可以根據需要發佈一些代碼? – JMK

+0

還不如此,不知道什麼是「沼澤」標準文本輸入是完全誠實的。我假設這是一個錯字,你只是在談論一個普通的文本輸入。請發佈代碼,我會跟進。我將假設,這是一個簡單的「自動完成」設置解決方案。 – rockmandew

回答

21

如果我理解正確的,您有自動完成功能的問題。簡單地將「autocomplete ='off'」添加到您的輸入中,並且應該禁用該功能。

<input type="text" autocomplete="off"/> 
+0

這不適用於任何現代瀏覽器。嘗試使用誘餌字段。 http://stackoverflow.com/a/2555771/317908 –

+1

它在Edge中適合我,謝謝! –

+0

在Edge中,如果您退格並刪除輸入內容,Edge將顯示自動填充框。所以雖然這個屬性有幫助,但並不能解決問題。 – Brain2000

1

如果你需要它的應用程序/站點範圍內,你可以使用jQuery:

$('input').attr('autocomplete','off'); 

或者,如果你和我一樣,使用角+ UI路由器你可以嘗試以下操作:

在你index.html添加下面的腳本:

<script type="text/javascript"> 
    setTimeout(function() { 
     $('input').attr('autocomplete', 'off'); 
    }, 2000); 
</script> 

然後覆蓋狀態的變化,以下內容添加到您的根控制器:

$rootScope.$on('$stateChangeStart', function() { 
       $timeout(function() { 
        $('input').attr('autocomplete', 'off'); 
       }, 2000); 
      }); 

的超時是HTML以應用的jQuery之前渲染。

如果你找到更好的解決方案,請讓我知道。

4

來自Mozilla: 您可以在實際表單標記<form autocomplete='off' ... >...</form>上設置自動完成功能,該標記可用於整個表單或單個<input type='text' />標記。

根據我的經驗,IE 11和Edge將它放在窗體上,但單個標籤不起作用。我試着在Chrome上進行測試,但是這些字段已經不能自動完成。

有關更多詳細信息,請閱讀完整的Article

注意

大多數瀏覽器忽略此爲登錄字段。

+1

這是很好的答案,歡呼! – JMK

+0

在邊緣它只有當放在窗體上,而不是個別的元素,謝謝 –