material-ui TextField禁用浏览器自动完成

时间:2018-01-17 15:02:15

标签: html forms input autocomplete material-ui

我使用材料ui v0.20.0并且我必须禁止为具有TextField的用户保存密码。我添加道具到TextField autocomplete =' nope'因为并非所有浏览器都能理解autocomplete =' off'似乎Chrome 63的最新版本不接受它。有时候它不起作用,有时也会起作用。我无法理解为什么它如此繁忙。当chrome要求保存密码并保存时,之后我想编辑输入我仍然有:enter image description here

  <TextField
         name='userName'
         floatingLabelText={<FormattedMessage id='users.username' />}
         value={name || ''}
         onChange={(e, name) => this.changeUser({name})}
         // autoComplete='new-password'

    /> 

    <TextField
        name='password'
        floatingLabelText={<FormattedMessage id='users.passwords.new' />}
        type='password'
        value={password || ''}
        onChange={(e, password) => this.changeUser({password})}
        autoComplete='new-password'
   />

看起来它适用于Firefox(v57.0.4)

默认情况下,TextField没有autoComplete =&#39; off&#39; enter image description here

12 个答案:

答案 0 :(得分:5)

自动完成功能必须位于inputProps内部

<TextField
   inputProps={{
      autoComplete: 'off'
   }}
/>

是个好方法

答案 1 :(得分:4)

如 Material-UI documentation 中所述: 将以下内容添加到 TextField。

<TextField
  inputProps={{
     ...params.inputProps,
     autoComplete: 'new-password',
   }}
 />
  

它禁用浏览器自动填充建议,也可用于自动完成的 TextField 组件。 注意:还有两个独立的属性 inputProps 和 InputProps。您可以将两者应用于同一项目。但是, inputProps 道具修复了自动完成问题。

答案 2 :(得分:3)

尝试使用noValidate道具将textfield封装在form标记内。 例如:

<form noValidate>
            <TextField
                label={'Enter Name'}
                required
                fullWidth
                autoFocus={true}
                value={text}
                onChange={(e) => (text = e.target.value)}
            />
</form>

我不知道autoComplete道具不起作用的原因是什么。但是以上方法有效。

答案 3 :(得分:1)

固定。只需要添加上面的实际输入字段

https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion - MDN https://medium.com/paul-jaworski/turning-off-autocomplete-in-chrome-ee3ff8ef0908 - 中等                                         在EDGE,Chrome(最新v63),Firefox Quantum(57.0.4 64-бит),Firefox(52.2.0)上测试                                         假字段是chrome / opera自动填充错误字段的解决方法

 const fakeInputStyle = {opacity: 0, float: 'left', border: 'none', height: '0', width: '0'}

 <input type="password" name='fake-password' autoComplete='new-password' tabIndex='-1' style={fakeInputSyle} />

  <TextField
  name='userName'
  autoComplete='nope'
  ... 
/>

<TextField
      name='password'
      autoComplete='new-password'
      ... 
    />

答案 4 :(得分:1)

通过Material UI输入,您可以使用

  

autoComplete =“新密码”

所以您将得到类似以下输入的内容:

<TextField
 autoComplete="new-password"
/>

例如,这对于避免登录页面上的浏览器提供更多样式很有帮助。

希望这对其他人有帮助!

答案 5 :(得分:1)

输入道具和文本字段道具的 autoComplete 属性旨在跟在 HTML spec 之后。

它似乎对我们中的一些人不起作用。奇怪的是,我没有看到规范中列出了 off,但它没有为我关闭它,而诸如 nopenahhhh 之类的字符串做 -这是规范中没有的字符串。

所以我选择了 none,它似乎关闭了建议并保持整洁。

此外,设置文本字段的 autoComplete 属性对我不起作用...

<TextField
    className={classes.textfield}
    label='Invitees'
    placeholder='A comma seperated list of emails'
    variant='outlined'
    value={users}
    onChange={onChange}
    inputProps={{
        autoComplete: 'none',
    }}
/>;

答案 6 :(得分:0)

您不再需要提供autoComplete =&#39; off&#39;对于主分支上的AutoComplete组件。它是默认添加的。

查看this thread了解详情。

答案 7 :(得分:0)

这对我有用:

每当您要禁用密码字段(也包括上述字段)的自动填充功能时,只需将其输入密码即可:

<input type="password" name='any-filed-name-here-password' autoComplete='new-password' />

重要的是要拥有autoComplete='new-password'

答案 8 :(得分:0)

这似乎对我有用(我们正在使用具有redux形式的材料ui)

primary: {
  main: "#000000"
}

如果输入的类型为=“ password”,则“ new-password”有效 如果“常规”字段以表格形式包装,则“关闭”有效

答案 9 :(得分:0)

在material-ui TextField中禁用自动完成。 它对我有用

<TextField
  name='password'
  autoComplete='off'
  type='text'
  ... 
/>

应为autoComplete ='off'

autoComplete='off'

答案 10 :(得分:0)

我最近遇到了这个问题。我尝试了在网上找到的所有内容,但最终对我有用的解决方法是执行以下操作。

  1. 请勿在TextField组件上设置type =“ password”
  2. DO在输入道具上将其与auto C 一起设置为“ new-password”:

    <TextField
       label="Password"
       className={classes.textField}
       name="password"
       inputProps={{
          type:"password",
          autoComplete: 'new-password'
       }} />
    

答案 11 :(得分:0)

关键是使用浏览器以前从未用用户填写的任何形式(例如“&#6#+”或“ PedroView”)保存的随机文本。这也将解决Chrome浏览器的自动完成问题,该问题会将所有字段保留为蓝色背景。

<TextField
     autoComplete='PedroView'
/> 

// MUI的最新版本

<TextField
     autoComplete='off'
/>