ν¬λ‘¬μ μ¬μ©νμ¬ ν μ€νΈ νλλ₯Ό μλ μ±μ°κΈ°νλ©΄ νλ‘ν λ μ΄λΈ ν μ€νΈκ° μμ§μ΄μ§ μκ³ μ ν νμλμ§ μμ΅λλ€ (0.8.0 κΈ°μ€).
μ΄κ²μ μλ§λ μμνκΈ°μ μ’μ κ³³μΌ κ²μ λλ€ ...
@illogikal λΉμ μ gifμ κ²μ ν μ μμ΅λκΉ?
μ¬κΈ° μμ΅λλ€ :
λ Έλμ κ°μ‘° νμλ νλκ° μλμΌλ‘ μ±μ μ‘μμ λνλ λλ€. 보μλ€μνΌ μνΈλ μ±μμ Έ μμ§λ§ λ μ΄λΈμ μ¬μ ν ββμ μ리μ μμ΅λλ€.
μ, ν₯λ―Έ λ‘κ΅°μ. @mbrookes λͺ¨λ μ λ ₯ μ νμμν κ²μΈμ§ μλλ©΄ λΉλ°λ²νΈ μ λ ₯λ§μμν κ²μΈμ§ μκ³ μμ΅λκΉ?
νμ€νμ§ μμ-μ£Όμμ λΉλ°λ²νΈμ μμλ₯Ό λ°κΎΈλ €κ³ νμ§λ§ μλ €μ§ μ¬μ©μ / λΉλ°λ²νΈλ₯Ό μ λ ₯νκ±°λ μ λΉλ°λ²νΈλ₯Ό μ μ₯νκΈ° μν΄ μλ μμ±μ΄ μ€νλμ§ μμμ΅λλ€. λ€λ₯Έ λΆμΌλ₯Ό ν μ€νΈνλ κ°μ₯ μ’μ λ°©λ²μ μ°ΎμμΌν©λλ€.
μ’μ, κ°κΉμ΄ μ₯λμ TextField νλͺ© μ€ μΌλΆλ₯Ό 리ν©ν λ§ ν κ³νμ λλ€. λλ μ‘°κΈ μ€ν ν΄ λ³Όκ². λ€λ₯Έ μ μ΄ μμΌλ©΄ μλ €μ£ΌμΈμ.
μλ νμΈμ! μ°λ¦¬λμ΄ λ¬Έμ λ₯Ό κ²ͺκ³ μμ΅λλ€. μ΄μ λν μ μ¬μ μΈ μμ μ μλνκ³ μ€ννκΈ° μν΄ λ‘컬μμ ν μμλ μΌμ΄ μμ΅λκΉ? μλλ©΄ 리ν©ν°λ§μ κΈ°λ€λ €μΌν κΉμ?
μμ λμ΄λ λΉλ°λ²νΈ νλμ μ νν λ¬Έμ κ° μμ΅λλ€. κ·Έ μΈμλ μΌλ° TextField
μ μ μ¬ν λ¬Έμ κ° μμ΅λλ€. κ°μ μ
λ ₯νλ©΄ μ¬λΌμ§λ ννΈ ν
μ€νΈ μΈνΈκ° μμ΅λλ€. κ·Έλ¬λ νμ΄μ§κ° λ λλ§ λ λ κ°μ μ€μ νλ©΄ (λ₯ λ§ν¬) ννΈ ν
μ€νΈλ μ¬μ ν μ€μ κ° λ€μ νμλ©λλ€. μ΄κ²μ λμΌν λ¬Έμ μΌ κ°λ₯μ±μ΄ μμ΅λκΉ μλλ©΄ λ³λμ λ¬Έμ μ
λκΉ?
μ΄κ²μ λμΌν λ¬Έμ μΌ κ°λ₯μ±μ΄ μμ΅λκΉ μλλ©΄ λ³λμ λ¬Έμ μ λκΉ?
λ€λ₯Έ λ¬Έμ μΈ κ² κ°μ΅λλ€.
μ½λμ μΆκ° ν μ onChange
μ
λ°μ΄νΈ ν μ state.isAutofilled
Chrome λ²μ 49.0.2623.87 (64 λΉνΈ) OS X El Capitan
ν€λ₯Ό λλ₯΄κ±°λ λ§μ°μ€λ₯Ό ν΄λ¦νλ©΄ μ¬λ°λ₯΄κ² νλ‘ν λμ§λ§ μ΄κΈ°λ‘λκ° μ€λ¨λ©λλ€.
μ νν κ°μ λ¬Έμ :
μλ€ μ?
κ°μ λ¬Έμ κ° λ°μν©λλ€.
MUIμμ μλνλ μλ μμ±μ λΉνμ±ννλ λ°©λ²μ΄ μμ΅λκΉ?
λΏ‘λΏ‘
λͺ κ°μ νλλ₯Ό λ§λ€κ³ " display : none "μ μ¬μ©νμ¬ μ¨κΈ°λ©΄λ©λλ€. μ:
κ·Έλ° λ€μ μ€μ νλλ₯Ό μλμ λμμμ€.
http://stackoverflow.com/questions/15738259/disabling-chrome-autofill
onChange μ΄λ²€νΈλ₯Ό λ°μμν€λ μ루μ μ΄ μμ΅λκΉ?
@antoinerousseau μ΄κ²μ΄ masterμ λ³ν© λ κΉμ?
@devdlabs https://github.com/callemall/material-ui/pull/3372#issuecomment -191523369
μ΄κ²μ μ μ¬ν λ¬Έμ μΌ μ μμ΅λλ€ (λμΌν κ·Όλ³Έ μμΈ, λ€λ₯Έ μ¦μ?)
μΈκΈ νλλ‘ μ λλ©μ΄μ λ¬Έμ κ° νμλμ§ μμ§λ§ TextField 컨ν μ΄λμ λμ΄λ μ λ ₯μ μμͺ½ μ¬λ°±μ κ³ λ €νμ§ μμ΅λλ€. κ·Έ κ²°κ³Ό TextFieldκ° μ»¨ν μ΄λ μλλ‘ 14px νμ₯λ©λλ€. λ§€μ° κ°λ¨ν ν΄κ²° λ°©λ²μ΄μ§λ§ μλ μμ± κΈ°λ₯μΌλ‘ λ§ νμλ©λλ€.
곧 μμ λ μμ μ λλ€.)
μ’μ @nathanmarks , κ°μ¬ν©λλ€ !!
νμ΄μ§λ₯Ό ν΄λ¦νμ§ μκ³ ν¬λ‘¬μ΄ μλ μμ± λ λ νλ‘ν λΌλ²¨μ μ λ°μ΄νΈνλ ν΄νΉμ μ°Ύμμ΅λκΉ?
μ΄κ²μ μ¬μ ν ββλ§€μ° κ³ ν΅μ€λ¬μ΄ λ¬Έμ μ λλ€.
μλνμ§ μλ vanilla-autofill-event λ₯Ό μ¬μ©ν΄ 보μμ΅λλ€.
λλ redux-form
(λ€λ₯Έ λ§μ μ¬λλ€κ³Ό λ§μ°¬κ°μ§λ‘)μ μ¬μ©νκ³ μμΌλ©° μΆμ
ν ν΄κ²° λ°©λ²μ μ°Ύμμ΅λλ€ (λ‘κ·ΈμΈ μμμ κ²½μ° λ€λ₯Έ μμμλ κ΄μ¬μ΄ μμ΅λλ€).
ν¬λ‘¬μμλ§ ν
μ€νΈ νμΌλ―λ‘ κ³ λ €μ€μ μ¬μ©νμμμ€.
μ¨κ²¨μ§ μ¬μ©μ μ΄λ¦ λ° λΉλ°λ²νΈ νλλ₯Ό μΆκ°νμ λ ν¬λ‘¬μ μ 체 μμμ 무μνμ΅λλ€ (ν¬λ‘¬μ΄ μ κ²½ μ°μ§ μλ display : noneμΌλ‘ μ¨κΈ°μ§ μλ ν).
κ·Έλμ 4 κ°μ (: disappointed :) μΆκ° νλλ₯Ό μ¬μ©νμ΅λλ€. 2 ν¬λ‘¬μ΄ λ΄ μμμ 무μνλλ‘ (autocomplete = offκ° μλνμ§ μμ) λ€λ₯Έ κ°μ§ μμμ 2 κ° λ μΆκ°νμ΅λλ€. -μμ λ³κ²½ μ΄λ²€νΈ :
class Login extends Component {
// This was tested under chrome only. It's ugly, but it works. Code was modified a bit for simplicity so it might not work out of the box.
componentDidMount() {
// Fix chrome auto-fill
setTimeout(() => {
const { change, dispatch }= this.props;
if (this.refs.usernameAutoFill.value && ! this.refs.username.value) {
dispatch(change('username', this.refs.usernameAutoFill.value));
}
if (this.refs.passwordAutoFill.value && !this.refs.password.value) {
dispatch(change('password', this.refs.passwordAutoFill.value));
}
}, 500);
}
render() {
const styles = {
autofill: {
height: 0,
width: '1px',
position: 'absolute',
left: 0,
top: 0
}
};
return (
<div>
<form style={styles.autofill}>
<input type="text" ref="usernameAutoFill" name="usernameAutoFill" />
<input type="password" ref="passwordAutoFill" name="passwordAutoFill" />
</form>
<form autocomplete="off">
<div style={styles.autofill}><input type="text" name="fakeusername" /><input type="password" name="fakepassword" /></div>
<Field name="username" component={() => <TextField ref="username" name="username" floatingLabelText="Username" />}/>
<Field name="password" component={() => <TextField ref="password" name="password" type="password" floatingLabelText="Password" />}/>
<RaisedButton primary={true} label="Login" type="submit"/>
</form>
</div>
)
}
}
export default {
Form: reduxForm({
form: 'Login'
})(Login)
}
κ°λ¨νκ² μ½λλ₯Ό μμ νμΌλ―λ‘ μ°Έμ‘° μ©μΌλ‘ λ§ μ¬μ©νμμμ€.
@ adamtal3 autoComplete="off"
@justinko μ λ§ μ€μνμ§ μμ΅λλ€. autoComplete
reactλ₯Ό μ¬μ©νλ©΄ autocomplete
λ©λλ€.
js κ° ( {'off'}
)μ΄ μλ λ¬Έμμ΄ κ° ( "off"
)μ μ¬μ©νμμ μ μ μμ΅λλ€.
λ΄κ° λμνλ κ²λ³΄λ€ React νμ€κ³Ό μΌκ΄μ±μ μΈκΈνκ³ μμ§λ§ ν° λ¬Έμ λ μλλΌκ³ μκ°ν©λλ€.
μ΄κ²μ΄ λ΄ ν΄κ²°μ± μ λλ€.
λ¨Όμ μ»΄ν¬λνΈκ° λ§μ΄νΈλμμ λ μ¬μ©μ μ΄λ¦μ΄ μλμΌλ‘ μ±μ μ‘λμ§ νμΈνμ΅λλ€.
κ·Έλ λ€λ©΄ μνΈ νλμ μνλ₯Ό μ
λ°μ΄νΈν©λλ€.
hasValue
κ° trueλ‘ λ°λλ©΄ νλ‘ν
λ μ΄λΈμ΄ μ
λ°μ΄νΈλ©λλ€.
componentDidMount() {
setTimeout(() => {
if(this.refs.username.getValue()) {
this.refs.password.setState({...this.refs.password.state, hasValue: true})
}
}, 100)
}
λμμ΄ λμκΈ°λ₯Ό λ°λλλ€. :)
λΈλΌμ°μ μμ μλμΌλ‘ μ±μμ§ λ νλ‘ν
λ μ΄λΈμ μ
λ°μ΄νΈνλ λ°©λ²μ μ°Ύμμ΅λλ€.
`
setTimeout (function () {
var autofilled = document.querySelectorAll ( 'input # password : -webkit-autofill');
if (μλ μμ±) {
$ ( "input [type = password]"). parent (). addClass ( "is-dirty");
}
}, 500);
`
λ§μ§λ§μ μ€λΉλ λ¬Έμ μμ μμ΄μΌν©λλ€.
"is-dirty"ν΄λμ€λ νλ‘ν
λ μ΄λΈμ νΈλ¦¬κ±°νλ ν΄λμ€μ
λλ€.
react-uiμ ν¨κ» redux-formμ μ¬μ©νκ³ μμ΅λλ€. λλ₯Όμν ν΄κ²°μ± μ νμν μ λ ₯ λ°λ‘ λ€μ κ°μ§ μ λ ₯μ λ°°μΉνλ κ²μ λλ€.
<TextField
{...password}
type="password"
placeholder={formatMessage(messages.loginPasswordPlaceholder)}
disabled={submitting}
/>
<Icon name="password" className={theme.icon}/>
<input className={theme.hiddenInput} type="password" />
React 16μ μν΄ μμ λμ΄μΌν©λλ€ : https://github.com/facebook/react/issues/7211#issuecomment -266774957
0.17.1μμ 0.18.1λ‘ μ λ°μ΄νΈνμ λ λμΌν λ¬Έμ κ° λ°μνμ΅λλ€.
λλ₯Ό μν΄ μΌν μμ :
class FixedTextField extends Component {
constructor() {
super()
this.state = { value: '' } }
}
textfield = null
componentDidMount() {
requestAnimationFrame(() => {
this.setState({ value: this.textfield.getInputNode().value })
})
}
render() {
return <TextField {...this.props} value={this.state.value} />
}
}
μμ μ¬νμ λ°± ν¬νΈκ° React 15.6.0
μμ λ°©κΈ λ¦΄λ¦¬μ€λμμ΅λλ€. μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλμ§ ν
μ€νΈ ν μμλ μ¬λμ΄ μμ΅λκΉ?
[μ°Έκ³ : μμ "λλ"κ²μλ¬Όμ μμ λ©λλ€. ν λ‘ μ μμνμ§ λ§κ³ ν¬ν λ²νΌμ μ¬μ©νμΈμ.].
@mbrookes λ΄κ° ν μ€νΈ
@Stupidism μΈλΆ μ¬ν?
2 λ μ μ κ²μ ν κ²κ³Ό κ°μ΅λλ€. https://github.com/callemall/material-ui/issues/718#issuecomment -167445748
@Stupidism Material-UIμ λ²μ , Reactμ λ²μ , λΈλΌμ°μ / λ²μ μ?
"name": "material-ui",
"version": "0.18.3",
"name": "react",
"version": "15.6.0",
md5-b91bd30d63e87f3b504e2619fb81ef97
Google Chrome 59.0.3071.86 (Official Build) (64-bit)
OS Linux
JavaScript V8 5.9.211.31
: man_shrugging :μ΄ κ²½μ° @ whtang906 μ ν΄κ²° λ°©λ² μ΄ νμ¬ μ΅μ μ μ ν μΈ κ² κ°μ΅λλ€.
redux-formμ κ²½μ°
constructor(props) {
super(props);
// This binding is necessary to make `this` work in the callback
this.refUsername = this.refUsername.bind(this);
this.refPassword = this.refPassword.bind(this);
}
componentDidMount() {
setTimeout(() => {
if(this.usernameRef.getValue()) {
this.passwordRef.setState({...this.passwordRef.state, hasValue: true});
}
}, 100)
}
refUsername(component) {
this.usernameRef = component.getRenderedComponent().refs.component;
}
refPassword(component) {
this.passwordRef = component.getRenderedComponent().refs.component;
}
<Field
name="username"
withRef
ref={this.refUsername}
component={TextField}
/>
<Field
name="password"
type="password"
withRef
ref={this.refPassword}
component={TextField}
/>
λ΄ μ±μ΄ μ‘°κΈ λλ €μ 보νμ μΆκ°νμ΅λλ€
componentDidMount() {
let times = 0;
const interval = setInterval(() => {
times += 1;
if(this.usernameRef.getValue()) {
this.passwordRef.setState({...this.passwordRef.state, hasValue: true});
clearInterval(interval);
} else if (times >= 10) {
clearInterval(interval);
}
}, 100)
}
Chrome μλ μμ± λΉλ°λ²νΈ νλμμ κ°μ κ°μ Έμ¬ μ μμ΅λλ€.
https://stackoverflow.com/questions/35049555/chrome-autofill-autocomplete-no-value-for-password
λ΄κ° v1-beta λΈλμΉλ₯Ό κ°μ§κ³ λ Έλ ν λ¬Έμ λ κ·Έ κ³Όμ μμ μμ λμμ΅λλ€. μ¬ μμ± λλ λ°μμ μ κ·Έλ μ΄λ μΌ μ μμ΅λλ€. μ°λ¦¬κ° κ·Έκ²μ λν΄ λλ€μ λκΉμ§ λ«μ΅λλ€. ν λ‘ ν΄ μ£Όμ μ κ°μ¬ν©λλ€!
μ€λ₯κ° μ¬μ ν μ‘΄μ¬ν©λλ€ ...
[email protected]
[email protected]
ν¬λ‘¬ 60.0.3112.90
@artalar componentDidMount
μ루μ
μ μλν΄λ³΄μΈμ O (β©_β©) O
@Stupidism μ루μ
μ κ°μ¬λ립λλ€! λλ μμ λͺ¨λ κ²μ μλνμ§λ§ κ·Έλ€ μ€ μ무κ²λ μλνμ§ μμμ΅λλ€. μλ§ λλΆλΆ 1 ~ 2 μ΄μ΄λκΉ ...
Btw,μ΄ λ²κ·Έλ Chromeμμλ§ λ°μνλ©° Firefoxλ μλ²½ν©λλ€. :)
@ Ivan-Parushev refμ μ¬μ©λ²μ΄ λ³κ²½ λμκΈ° λλ¬Έμ΄λΌκ³ μκ°ν©λλ€. λ¬Έμ κ° ν΄κ²° λμμ΅λκΉ?
μ¬κΈ°μ ν΄κ²°λμ§ μμμΌλ©°, componentDidMountμ μ‘΄μ¬νλ κ²½μ° localStorageμμ κ°μ μ±μ°κ³ λͺ¨λ μ΅μ λ²μ μμ λμΌν μ€λ₯κ° λ°μν©λλ€.
μ¬μ ν μμ μ κΈ°λ€λ¦¬κ³ μμ΅λλ€ ...
μ€λ λλ₯Ό μ κ·Έκ³ μμ΅λλ€. μ΄ λ¬Έμ λ 2 λ μ μ λλ€. μ΄μ v1-beta λΈλμΉμ μ΄μ μ λ§μΆκ³ μμ΅λλ€. 볡μ μμκ°μλ μ¬λμ΄ μλ€λ©΄ v1-beta λΈλμΉμ μ νΈλ₯Ό μ΄μ΄μ£ΌμΈμ.
μ΄μ 3 λ μ΄λμμ΅λλ€. μ΄ λ¬Έμ λ μ΅μ λ°μ λ° λ¨Έν°λ¦¬μΌ UI λ²μ μλ μ¬μ ν μ‘΄μ¬ν©λλ€.
@tschaub Hahaλ
@tsmirnov λΉμ μ΄
μ΄ λ²κ·Έμ λν CSS μ루μ μ΄ μμ΅λλ€.
// Selects label that comes right after the autofilled input
input:-webkit-autofill + label {
// Insert your active label styles
}
μ¬κΈ° μμ΅λλ€ :
λ Έλμ κ°μ‘° νμλ νλκ° μλμΌλ‘ μ±μ μ‘μμ λνλ λλ€. 보μλ€μνΌ μνΈλ μ±μμ Έ μμ§λ§ λ μ΄λΈμ μ¬μ ν ββμ μ리μ μμ΅λλ€.
λλ κ°μ λ¬Έμ μ μ§λ©΄νκ³ μμ΅λλ€.
μ΄ λ²κ·Έμ λν CSS μ루μ μ΄ μμ΅λλ€.
// Selects label that comes right after the autofilled input input:-webkit-autofill + label { // Insert your active label styles }
μ΄κ²μ΄ 무μμ μλ―Ένλμ§ μ€λͺ ν΄ μ£Όμκ² μ΅λκΉ?
μ΄ λ²κ·Έμ λν CSS μ루μ μ΄ μμ΅λλ€.
// Selects label that comes right after the autofilled input input:-webkit-autofill + label { // Insert your active label styles }
μ΄κ²μ΄ 무μμ μλ―Ένλμ§ μ€λͺ ν΄ μ£Όμκ² μ΅λκΉ?
: -webkit-autofillμ λΈλΌμ°μ λ³λ‘ μλ μμ± λ νλλ₯Ό μ νν©λλ€. μ λ ₯ λ°λ‘ μμ λΌλ²¨μ λκ³ : -webkit-autofill μ νκΈ°λ‘ μ ννμΈμ. λμμ΄ λ νμνλ©΄ νμ¬ HTML ꡬ쑰λ₯Ό 곡μ νμΈμ.
μ΄ λ²κ·Έμ λν CSS μ루μ μ΄ μμ΅λλ€.
// Selects label that comes right after the autofilled input input:-webkit-autofill + label { // Insert your active label styles }
μ΄κ²μ΄ 무μμ μλ―Ένλμ§ μ€λͺ ν΄ μ£Όμκ² μ΅λκΉ?
: -webkit-autofillμ λΈλΌμ°μ λ³λ‘ μλ μμ± λ νλλ₯Ό μ νν©λλ€. μ λ ₯ λ°λ‘ μμ λΌλ²¨μ λκ³ : -webkit-autofill μ νκΈ°λ‘ μ ννμΈμ. λμμ΄ λ νμνλ©΄ νμ¬ HTML ꡬ쑰λ₯Ό 곡μ νμΈμ.
νμ€ν! μ¬κΈ° λ΄ HTMLμ΄ μμ΅λλ€. κ°μ¬
https://pastebin.com/yjJCip3r
μ΄ λ²κ·Έμ λν CSS μ루μ μ΄ μμ΅λλ€.
// Selects label that comes right after the autofilled input input:-webkit-autofill + label { // Insert your active label styles }
μ΄κ²μ΄ 무μμ μλ―Ένλμ§ μ€λͺ ν΄ μ£Όμκ² μ΅λκΉ?
: -webkit-autofillμ λΈλΌμ°μ λ³λ‘ μλ μμ± λ νλλ₯Ό μ νν©λλ€. μ λ ₯ λ°λ‘ μμ λΌλ²¨μ λκ³ : -webkit-autofill μ νκΈ°λ‘ μ ννμΈμ. λμμ΄ λ νμνλ©΄ νμ¬ HTML ꡬ쑰λ₯Ό 곡μ νμΈμ.
νμ€ν! μ¬κΈ° λ΄ HTMLμ΄ μμ΅λλ€. κ°μ¬
https://pastebin.com/yjJCip3r
λΌλ²¨μ μ
λ ₯ λ°λ‘ λ€μ λμ€λ―λ‘ htmlλ‘ μ무κ²λ ν νμκ° μμ΅λλ€.
μλ μμ± λ μ
λ ₯ λ°λ‘ μμμλ λ μ΄λΈμ μ ννκ³ μλμ κ°μ΄ νμ± λ μ΄λΈ μ€νμΌμ μ€μ νμμμ€.
.mdl-textfield__input:-webkit-autofill + .mdl-textfield__label {
// Active label styles here
top: -20px; // Just an example
transform: scale(0.75); // Just an example
}
μ΄, @ kishan3 κΈΈμ μμ κ² κ°μμ. MDLμ μ΄μͺ½μ λλ€-> https://github.com/google/material-design-lite/issues/4827 π
(MDLμ΄ μ§μ΄λΌλ μ¬μ€μ κ°μν λ, μλ§λ λΉμ μ κ²°κ΅ μ¬λ°λ₯Έ μ₯μμ μμ κ²μ λλ€!)
μ μ μ₯! μ΄λ¦κ³Ό νΌλν©λλ€. : μμ : @mbrookes ν κ°μ§ μ§λ¬Έ : CDN λ§ν¬κ°μλ
@ kishan3 λΉμ μ΄ ν μμλ , κ·Έκ²μ λ¬Έμμμ λ§νλ κ²μ²λΌ, ν΄λΌμ΄μΈνΈκ°μ΄ μλ¨μ ꡬμΆνλ λ°λ©΄,μ΄ μΊμ λ μ μ΄λ μ²μ ν λκΉμ§, μ 체 λΌμ΄λΈλ¬λ¦¬λ₯Ό λ€μ΄λ‘λ ν μ μμ§λ§ λ‘컬 λΉμ μ΄ κ΅¬μ± μμκ° ν¬ν¨λλ μ΅μ ν ν μ μμμ μλ―Έν©λλ€.
ν΄κ²°μ± μ 무μμ λκΉ?
μ΄ λ¬Έμ λ v0.xμ κ΄λ ¨λ©λλ€.
@oliviertassinari μ΄ stilμ v3.4.0μ μ‘΄μ¬ν©λλ€.
μ κ²½μ°μλ λλ‘ λ€μ΄μ μ¬μ©νκ³ μμ΅λλ€. μ¬μ©μκ° λλ‘ λ€μ΄μμ 무μΈκ°λ₯Ό μ νν λ€μ κ°μ μνλ‘ μ€μ νλ©΄ κ°μ μ°κ²°λ TextFieldκ° λ μ΄λΈμ λΆλνμ§ μμ΅λλ€.
νΈμ§ : 보μ΄λ κ²μ²λΌ null
λ‘ TextField κ°μ μ΄κΈ°ννλ©΄ μ κ°μ΄ μ λ¬ λ λ λΆλ μμμ μ΄ μ΄λνμ§ μμ΅λλ€. null
λμ λΉ λ¬Έμμ΄λ‘ stateμ κ°μ μ΄κΈ°ννμ¬ μμ λμμ΅λλ€.
μμ§ μ¬κΈ°μμλ μ¬λμ΄ μλ€λ©΄μ΄ ν¨κ³Όκ° μ μ©λ TextField μ InputLabelProps={{ shrink: true }}
μ΄ propμ μ€μ νμ΅λλ€. μ°λ¦¬ νμμν μ΅κ³ μ μ루μ
μ΄μμ΅λλ€.
@ tom-con κ°μ¬ν©λλ€, κ·Έκ²μ λλ₯Ό μν΄ μλ²½νκ² μλνμ΅λλ€.
μ΄ λ¬Έμ λ 2019 λ
μλ μ¬μ ν μ‘΄μ¬ν©λλ€ ...
μμ§ μ¬κΈ°μμλ μ¬λμ΄ μλ€λ©΄μ΄ ν¨κ³Όκ° μ μ©λ TextField μ
InputLabelProps={{ shrink: true }}
μ΄ propμ μ€μ νμ΅λλ€. μ°λ¦¬ νμμν μ΅κ³ μ μ루μ μ΄μμ΅λλ€.
λλ μ λ§ νΌλ μ€λ¬μ κ³ λΉμ μ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€! μ΅κ³ μ κΆμ₯ μ루μ !
v0.x λ¬Έμ (2015)μ λλ€. # 14427μ μ°Έμ‘°νμΈμ.
μ΄ λ²κ·Έμ λν CSS μ루μ μ΄ μμ΅λλ€.
// Selects label that comes right after the autofilled input input:-webkit-autofill + label { // Insert your active label styles }
@ozturkcangokkaya μλ νμΈμμ΄ CSS μ루μ μ Chromeμμ μ μλν©λλ€. νμ§λ§ firefoxμμ λ΄ μμμ νμΈν λ λΆλ λ μ΄λΈμ΄ μλνμ§ μμ΅λλ€. μ webkit-autofillμ΄ firefoxμ μν₯μ λ―ΈμΉλμ§ μμλκΉ?
v4μ λν΄μλ # 14427μ μ°Έμ‘°νμμμ€.
κ°μ₯ μ’μ ν΄κ²°μ± μ Materialise μ¬μ©μ μ€μ§νκ³ Bootstrap λλ λ€λ₯Έ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ κ²μ λλ€. ν΄κ²° λ°©λ²μ μ°ΎμμΌνλ©° Googleμ λ¬Έμ λ₯Ό ν΄κ²°νλ λ° κ΄μ¬μ΄μλ κ² κ°μ΅λλ€.
μμ§ μ¬κΈ°μμλ μ¬λμ΄ μλ€λ©΄μ΄ ν¨κ³Όκ° μ μ©λ TextField μ
InputLabelProps={{ shrink: true }}
μ΄ propμ μ€μ νμ΅λλ€. μ°λ¦¬ νμμν μ΅κ³ μ μ루μ μ΄μμ΅λλ€.
κ°μ¬ν©λλ€. InputLabelProps={{ shrink: form.password }}
λ₯Ό μ¬μ©νκ³ μμΌλ©° μλ²½νκ² μλν©λλ€.
<TextField
id="loginPassword"
label="Login Password"
type="text"
fullWidth
value={form.password}
onChange={(e) => setAttribute('form.password', e.target.value)}
InputLabelProps={{ shrink: form.password }}
/>
λ΄ νλ‘μ νΈμ lodash.mergeλ₯Ό μ€μΉνλ λ¬Έμ λ₯Ό ν΄κ²° ν ν μ€μ²© λ κ°μ²΄λ₯Ό μ¬μ©ν λ reduxκ° λμΌν΄μΌνλ€κ³ μκ°νκΈ° λλ¬Έμ ν μ€νΈ νλ κ΅¬μ± μμλ₯Ό μλͺ» μ±μ°κ³ μμμ κΉ¨λ¬μμ΅λλ€.
보μλ€μνΌ λ κ°μ μ€μ²© λ κ°μ²΄λ₯Ό νΌν© ν λ μ¬λ°λ₯΄κ² μ±μμ§μ§ μμ΅λλ€.
λλ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ μ΄κ²μ ν΄κ²°νκ³ κ·Έλ κ²λμμ΅λλ€.
μ΅μ λ²μ μ Material-UI (v4.9.0)λ κΈ°λ³Έμ μΌλ‘μ΄λ₯Ό μ§μν©λλ€.
κ°μ₯ μ μ©ν λκΈ
μμ§ μ¬κΈ°μμλ μ¬λμ΄ μλ€λ©΄μ΄ ν¨κ³Όκ° μ μ©λ TextField μ
InputLabelProps={{ shrink: true }}
μ΄ propμ μ€μ νμ΅λλ€. μ°λ¦¬ νμμν μ΅κ³ μ μ루μ μ΄μμ΅λλ€.