2009-12-18 24 views
20

Có thể tắt tính năng tự động điền có chọn lọc trong các trường văn bản bằng mã không?Làm cách nào để vô hiệu hóa tính năng tự động điền trong văn bản trình duyệt nhập liệu có chọn lọc qua mã?

Tôi đang phát triển mã tùy chỉnh trong ASP.Net AJAX để tìm kiếm đề xuất trong cơ sở dữ liệu và tôi muốn ngăn các đề xuất trình duyệt xuất hiện khi người dùng bắt đầu nhập vào hộp văn bản.

Tôi đang tìm một giải pháp hoạt động trong các trình duyệt hiện đại nhất (IE 7 & 8, Firefox, Safari và Chrome). Đó là ok nếu workaround là trong Javascript.

Trả lời

29

Xem thuộc tính HTML tự động hoàn thành (trên biểu mẫu hoặc thẻ đầu vào).

<form [...] autocomplete="off"> [...] </form> 

W3C > Autocomplete attribute

Edit:

Ngày nay - từ ý kiến ​​- trình duyệt web không luôn trân trọng những hành vi được xác định thẻ autocomplete. Sự không tôn trọng này có thể được bao quanh với một chút mã JavaScript nhưng bạn nên nghĩ đến việc bạn muốn làm trước khi sử dụng nó.

Trước tiên, các trường sẽ được điền trong quá trình tải trang và sẽ chỉ bị làm trống sau khi tải trang. Người dùng sẽ đặt câu hỏi tại sao trường này đã bị làm trống.

Thứ hai, thao tác này sẽ đặt lại các cơ chế trình duyệt web khác, như tự động điền của trường khi bạn quay lại trang trước.

jQuery(function() 
 
{ 
 
    $("input[autocomplete=off]").val(""); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<form method="post" action=""> 
 
    <div class="form-group"> 
 
    <label for="username">Username</label> 
 
    <input type="text" id="username" name="username" value="John" autocomplete="off"> 
 
    </div> 
 
    <div class="form-group"> 
 
    <label for="password">Password</label> 
 
    <input type="password" id="password" name="password" value="qwerty" autocomplete="off"> 
 
    </div> 
 
    <input type="submit" value="Login"> 
 
</form>

+5

này không hoạt động trong Chrome. – Cerin

+0

'tự động hoàn tất' hiện bị bỏ qua bởi tất cả trừ các trình duyệt lỗi thời/lỗi thời nhất –

+0

Đây không phải là giải pháp khả thi nữa. – Nugs

4

Thêm thuộc tính autocomplete=off vào phần tử html input sẽ làm điều đó.

10

bạn có thể đặt nó vào đầu vào của bạn:

<input type="text" name="off" autocomplete="off"> 

hoặc trong jquery

$(":input").attr("autocomplete","off"); 
0

Thêm AutoCompleteType="Disabled" để textbox của bạn

+4

Điều đó sẽ chỉ hoạt động với IE chứ không phải với các trình duyệt khác. – Rutix

1

này nên làm việc ở mọi trình duyệt

<script type="text/javascript"> 
     var c = document.getElementById("<%=TextBox1.ClientID %>"); 
     c.select = 
     function (event, ui) 
     { this.value = ""; return false; } 
    </script> 
4

Có 2 giải pháp cho vấn đề này. Tôi đã thử nghiệm mã sau đây trên Google Chrome v36. gần đây Phiên bản Google Chrome lực lượng Tự động điền không phụ thuộc vào Autocomplete=off .Some của hacks trước không làm việc nữa (34+ phiên bản)

Giải pháp 1:

Đặt sau mã theo dưới <form ..> thẻ.

<form id="form1" runat="server" > 
<input style="display:none" type="text" name="fakeusernameremembered"/> 
<input style="display:none" type="password" name="fakepasswordremembered"/> 

... 

Read more

Giải pháp 2:

$('form[autocomplete="off"] input, input[autocomplete="off"]').each(function() { 

       var input = this; 
       var name = $(input).attr('name'); 
       var id = $(input).attr('id'); 

       $(input).removeAttr('name'); 
       $(input).removeAttr('id'); 

       setTimeout(function() { 
        $(input).attr('name', name); 
        $(input).attr('id', id); 
       }, 1); 
      }); 

Nó loại bỏ "tên" và "id" thuộc tính từ các yếu tố và gán chúng trở lại sau 1ms.

+0

Đây là phương pháp duy nhất hiện đang hoạt động, các câu trả lời khác đã lỗi thời. –

0

workaround của tôi là làm cho lĩnh vực mật khẩu một textbox bình thường, sau đó sử dụng jquery để biến nó thành trường mật khẩu trên tập trung:

asp:TextBox runat="server" ID="txtUsername" /> 
<asp:TextBox runat="server" ID="txtPassword" /> 
<script> 
    $("#txtPassword").focus(function() { 
     $("#txtPassword").prop('type', 'password'); 
    }); 
</script> 
Các vấn đề liên quan