Stop browser from filling textboxes with details - asp.net

I've run into a really annoying problem, and I'm hoping it's just a setting I've missed. I've got an ASP.NET application which allows users to enter their username/password in various places (e.g. login, change password, change username etc..). When I logged in, the browser asked if I would like to store the user details. Usually, I click 'no', but this time I decided to click 'yes'. Now, certain textboxes in my form are prefilled with the username or password. Is it possible to remove these, as they sometimes appear in textboxes which shouldn't be prefilled. I tried setting AutoCompleteType=none and Text='' but it still gets prefilled. The textboxes don't have much in common, except the same CssClass and, for password boxes, TextMode=password. The names are different, although sometimes they include the word name (e.g. fullName, userName). Is there a way to stop the browser from filling certain textboxes?
Thanks

<input type="text" name="Username" autocomplete="off">
You can also put this on the form tag. Note this does not work consistently in all browsers.

The only solution that worked for me was to include two fields, one for login and one for the password with display: none
<input type="text" style="display: none">
<input type="password" style="display: none">

if you set autocomplete="off"... the textbox will loose every words on its history...
but if you want to prevent browser saved usernames and password, the best way is to put these tags in top of your page:
<input type="text" style="display: none">
<input type="password" style="display: none">

<asp:TextBox ID="Text1" runat="server" AutoCompleteType="Disabled"></asp:TextBox>
If you happen to work in a much more updated framework, this code should work as expected. It has been 8 years ago and some of the answers here is outdated.

In my case I needed both: autocomplete="off" AutoCompleteType="Disabled"
I am also using time picker from rome.js and preventing user from typing into textbox on keydown which complicated things.
<asp:TextBox ID="txtReturnTime" autocomplete="off" AutoCompleteType="Disabled" onkeydown="this.blur();" AutoPostBack="true" runat="server" ClientIDMode="Static"></asp:TextBox>
<script>
rome(txtReturnTime, { date: false, min: '07:15', max: '15:31', timeInterval: 900 });
</script>

Related

Request.Form is nothing when the object is disabled

I Google and search every article here and in the google but i cannot find anything regarding this issue. Any idea why the request.form["name here"] is nothing when the html control is disabled something like
<input type="radio" name="name here" disabled />
removing disabled would return the values. I tested this only on IE 10 not sure on other browsers.
I am looking into changing the css of the radio button but that is a different story.
Thank you.
Disabled form fields are not part of the posted data. If you disable the html control the data will not be posted.
If you want to show the data and have it posted, but not possible to edit you can set the control to readonly instead.
<input type="radio" name="name here" readonly="readonly" />

ASP.NET Login web controller Textbox

I just wonder if it is possible to have placeholder for text boxes of a log in?
I am using <asp:Login runat="server"> </asp:Login> and i want to access over textboxes.
I have login page which i made using <asp:Login runat="server"> </asp:Login>, as you know the login form has 2 fields one username and one password, i don't want to use any label for them, however i have to show what is the field, by something. i thought using a placeholder which will disappear as soon as someone types in something. in normal form i can use <input type="text" name="Username" placeholder="Username" /> but in this case i can not access the field.
Thank you!

Control.UniqueID different after cross-page postback

I have a simple ASP.NET page with a MasterPage. Within the MasterPage, I have two login fields:
<input type="text" runat="server" id="txtUserName"/>
<input type="text" runat="server" id="txtPassword"/>
When the controls are rendered to the page, ASP.NET renders the following:
<input type="text" runat="server" id="ctl00_txtUserName" name="ctl00$txtUserName"/>
<input type="text" runat="server" id="ctl00_txtPassword" name="ctl00$txtPassword"/>
If I understand correctly, the name attribute corresponds to the UniqueID property of a control. However, when I'm debugging Page_Load and attempt to view the UniqueID of these fields, they have different values (ctl0$txtUserName and ctl0$txtPassword respectively)!
Note that this does not seem to be an issue on all pages using this MasterPage. Most of them work correctly and use ctl0$txtUserName and ctl0$txtPassword in both rendering and Page_Load.
Any idea what might cause ASP.NET to render a different UniqueID for a control than it uses in Page_Load?
I'm still not sure what was causing the generated UniqueIDs in the MasterPage to be different in Page_Load than when rendered to the page. However, I was able to get around the issue by storing the UniqueIDs of these fields in hidden fields. I was then able to access the values directly in the Request.Form collection.
In other words, I did this:
In the MasterPage -
<input type="text" runat="server" id="txtUserName"/>
<input type="text" runat="server" id="txtPassword"/>
<input type="hidden" id="txtUserNameUID" value="<%=txtUserName.UniqueID%>"/>
<input type="hidden" id="txtPasswordUID" value="<%=txtPassword.UniqueID%>"/>
During Page_Load of the child page -
string username = Request.Form[Request.Form["txtUserNameUID"]];
string password = Request.Form[Request.Form["txtPasswordUID"]];
Hope this helps anyone else struggling with UniqueID weirdness in ASP.NET!
Weird quirk I just became aware of: any wrapping controls that are runat server must also have IDs. For instance, if you have a panel around the control, i.e. whatever "ctl00" is, it must be assigned an ID. If it is not set, it will be allocated one and this can change.

copy and pasting into web input box causes strange behavior?

i have a plain html form on a windows box running windows server 2003. I have come upon something very strange. I input items into an input box and click submit. It safely post to the next page. However if i copy and paste into the box its hit or miss. More miss then hit. WHat i mean is that the input box eventhough has values in it does not seem to post the values to the next aspx page. This is racking my brain.
<form name="sending" method="POST" action="https://xx/Retrieveimg.aspx" target="_self">
<font size="2">invoice :</font><br>
<input name="img" size="50" runat="server">
<input type="submit" value="Send" name="Send">
</form>
has anyone ever seen this behavior before?
I dont see you have an ID for the input which has a runat="server" attribute. Add an ID and try again.

stop formfields prefilling

i have a asp.net form that opens in a jquery overlay. for some reason when this form opens the browser tries to prefill my 'confirm email' textbox with a username like 'admin' i have nothing to suggest this is a username field. cannot see how i can remove this.
<div class="loginPanelLabel">
Confirm email*
</div>
<div class="loginPanelControl">
<asp:TextBox ID="tbConfirmEmail" Text="" runat="server"></asp:TextBox>
</div>
<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="Email address must match" ControlToCompare="tbEmail" ValidationGroup="Group1" ControlToValidate="tbConfirmEmail" CssClass="validator"></asp:CompareValidator>
</div>
Any ideas?
It's probably just some bad data in your own browser's autofill. If you try a different browser it should not be an issue.
The browser stores autofill values based on the input ID. If you want to prevent autofill you can either randomise the input ID or use autocomplete="off" as per the other answers.
I Just looked how YouTube does this in their search box; they use autocomplete="off", too.

Resources