How to turn off html input form field suggestions?

前端 未结 8 1341
难免孤独
难免孤独 2021-01-31 07:20

By suggestions I mean the drop down menu appear when you start typing, and it\'s suggestions are based on what you\'ve typed before:

for example when I type \'a

相关标签:
8条回答
  • 2021-01-31 07:24

    Adding the two following attributes turn off all the field suggestions (tested on Chrome v85, Firefox v80 and Edge v44):

    <input type="search" autocomplete="off">
    
    0 讨论(0)
  • 2021-01-31 07:25

    I know it's been a while but if someone is looking for the answer this might help. I have used autocomplete="new-password" for the password field. and it solved my problem. Here is the MDN documentation.

    0 讨论(0)
  • 2021-01-31 07:31

    autocomplete = "new-password" does not work for me.

    I built a React Form. Google Chrome will autocomplete the form input based on the name attribute.

     <input 
      className="scp-remark" 
      type="text" 
      name="remark"
      id='remark'
      value={this.state.remark} 
      placeholder="Remark" 
      onChange={this.handleChange} 
    />
    

    It will base on the "name" attribute to decide whether to autofill your form. In this example, name: "remark". So Chrome will autofill based on all my previous "remark" inputs.

    <input 
      className="scp-remark" 
      type="text" 
      name={uuid()} //disable Chrome autofill
      id='remark'
      value={this.state.remark} 
      placeholder="Remark" 
      onChange={this.handleChange} 
    />
    

    So, to hack this, I give name a random value using uuid() library.

    import uuid from 'react-uuid';
    

    Now, the autocomplete dropdown list will not happen. I use the id attribute to identify the form input instead of name in the handleChange event handler

    handleChange = (event) => {
        const {id, value} = event.target;
        this.setState({
            [id]: value,
        })
    }
    

    And it works for me.

    0 讨论(0)
  • 2021-01-31 07:36

    On Chrome, the only method we could identify which prevented all form fills was to use autocomplete="new-password". Apply this on any input which shouldn't have autocomplete, and it'll be enforced (even if the field has nothing to do with passwords, e.g. SomeStateId filling with state form values). See this link on the Chromium bugs discussion for more detail.

    Note that this only consistently works on Chromium-based browsers and Safari - Firefox doesn't have special handlers for this new-password (see this discussion for some detail).

    Update: Firefox is coming aboard! Nightly v68.0a1 and Beta v67.0b5 (3/27/2019) feature support for the new-password autocomplete attribute, stable releases should be coming on 5/14/2019 per the roadmap.

    0 讨论(0)
  • 2021-01-31 07:38

    use autocomplete="off" attribute

    Quote:IMPORTANT

    Put the attribute on the <input> element, NOT on the <form> element

    0 讨论(0)
  • 2021-01-31 07:39

    What you want is to disable HTML autocomplete Attribute.

    Setting autocomplete="off" here has two effects:

    It stops the browser from saving field data for later autocompletion on similar forms though heuristics that vary by browser. It stops the browser from caching form data in session history. When form data is cached in session history, the information filled in by the user will be visible after the user has submitted the form and clicked on the Back button to go back to the original form page.

    Read more on MDN Network

    Here's an example how to do it.

    <form action="#" autocomplete="on">
      First name:<input type="text" name="fname"><br> 
      Last name: <input type="text" name="lname"><br> 
      E-mail: <input type="email" name="email" autocomplete="off"><br>
      <input type="submit">
    </form>

    If it's on React framework then use as follows:

    <input
        id={field.name}
        className="form-control"
        type="text"
        placeholder={field.name}
        autoComplete="off"
        {...fields}/>
    

    Link to react docs

    Update

    Here's an update to fix some browsers skipping "autocomplete=off" flag.

    <form action="#" autocomplete="off">
      First name: <input type="text" name="fname" autocomplete="off" readonly onfocus="this.removeAttribute('readonly');"><br> Last name: <input type="text" name="lname" autocomplete="off" readonly onfocus="this.removeAttribute('readonly');"><br> E-mail:
      <input type="email" name="email" autocomplete="off" readonly onfocus="this.removeAttribute('readonly');"><br>
      <input type="submit">
    </form>

    0 讨论(0)
提交回复
热议问题