Material-ui: [TextField] рдлреЙрд░реНрдо рдСрдЯреЛрдлрд┐рд▓ рдЯреЗрдХреНрд╕реНрдЯрдлреАрд▓реНрдб рдкрд░ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рд▓реЗрдмрд▓ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 29 рдордИ 2015  ┬╖  75рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mui-org/material-ui

рдЬрдм рдЖрдк рдХреНрд░реЛрдо рдХреЛ рдСрдЯреЛрдлрд┐рд▓ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рд▓реЗрдмрд▓ рдЯреЗрдХреНрд╕реНрдЯ рдЪреЗрддрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ (0.8.0 рдХреЗ рдЕрдиреБрд╕рд╛рд░) рджрд┐рдЦрд╛рддрд╛ рд╣реИ

bug ЁЯРЫ TextField external dependency v0.x

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЕрдЧрд░ рдХреЛрдИ рдЕрднреА рднреА рдпрд╣рд╛рдБ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдЗрд╕ рдкреНрд░реЛрдк рдХреЛ InputLabelProps={{ shrink: true }} TextField рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдкрд░ рдкреНрд░рднрд╛рд╡

рд╕рднреА 75 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рд╢рд╛рдпрдж рдПрдХ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реИ ...

@illogikal рдХреНрдпрд╛ рдЖрдк gif рдХреА рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рд╣реЗрдпрд░ рдпреВ рдЧреЛ:

image

рдкреАрд▓рд╛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЦреЗрддреЛрдВ рдХреЛ рд╕реНрд╡рдд: рд╕реНрдлреВрд░реНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╛рд╕рд╡рд░реНрдб рднрд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдмрд▓ рдЕрднреА рднреА рд╣реИред

рдордо, рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред @mbrookes рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рднреА рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдпрд╛ рдХреЗрд╡рд▓ рдкрд╛рд╕рд╡рд░реНрдб рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рд╣реИ?

рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ - рдореИрдВрдиреЗ рдкрддреЗ рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рдХреНрд░рдо рдХреЛ рд╕реНрд╡реИрдк рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдСрдЯреЛрдлрд╝рд┐рд▓ рдиреЗ рдЖрдЧ рдирд╣реАрдВ рд▓рдЧрд╛рдИ, рдпрд╛ рддреЛ рдПрдХ рдЬреНрдЮрд╛рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / рдкрд╛рд╕рд╡рд░реНрдб рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдПрдХ рдирдпрд╛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЕрдиреНрдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдареАрдХ рд╣реИ, рдореИрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрдЫ TextField рдХреЗ рд╕рд╛рдорд╛рди рдХреЛ рдлрд┐рд░ рд╕реЗ рднрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рднреА рдереЛрдбрд╝рд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдЕрдЧрд░ рддреБрдо рдХреБрдЫ рдФрд░ рдиреЛрдЯрд┐рд╕ред

рдирдорд╕реНрдХрд╛рд░! рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП w / рдХреБрдЫ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реБрдзрд╛рд░реЛрдВ рдХреЛ рдЖрдЬрд╝рдорд╛рдиреЗ рдФрд░ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╛ рдлрд┐рд░ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдкрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ?

рд╣рдореЗрдВ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдкрд╛рд╕рд╡рд░реНрдб рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рдЯреАрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдПрдХ рд╕рд╛рджреЗ TextField рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдВрдХреЗрдд рдкрд╛рда рд╕реЗрдЯ рд╣реИ рдЬреЛ рдпрджрд┐ рдЖрдк рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рд╣рдо рдкреГрд╖реНрда рд░реЗрдВрдбрд░ (рдЧрд╣рд░рд╛ рд▓рд┐рдВрдХ) рдХрд╛ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕рдВрдХреЗрдд рдкрд╛рда рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп рдХреЗ рдкреАрдЫреЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ рдпрд╛ рдпрд╣ рдХреБрдЫ рдЕрд▓рдЧ рд╣реЛрдЧрд╛?

image

рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ рдпрд╛ рдпрд╣ рдХреБрдЫ рдЕрд▓рдЧ рд╣реЛрдЧрд╛?

рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджреЗ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред

рдПрдХ рдЖрдХрд▓рди рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдгрд╛: https://github.com/appsforartists/gravel/blob/master/src/components/Input.jsx#L208

рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ onChange рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ state.isAutofilled

Chrome рд╕рдВрд╕реНрдХрд░рдг 49.0.2623.87 (64-рдмрд┐рдЯ) OS X El Capitan

image

рдпрджрд┐ рдХреЛрдИ рдХреБрдВрдЬреА рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рддреИрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓реЛрдб рдЯреВрдЯ рдЧрдпрд╛ рд╣реИред

рд╕рдЯреАрдХ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛:

s

рдХреЛрдИ рд╡рд┐рдЪрд╛рд░, рджреЛрд╕реНрддреЛрдВ?

рдЗрд╕реА рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ред

рдХреНрдпрд╛ рдСрдЯреЛрдлрд┐рд▓ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдПрдордпреВрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

@ kand617

рдмрд╕ рдХреБрдЫ рдлрд╝реАрд▓реНрдб рдмрдирд╛рдПрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ " рдкреНрд░рджрд░реНрд╢рди: рдХреЛрдИ рдирд╣реАрдВ " рдХреЗ рд╕рд╛рде



рдлрд┐рд░ рдЕрдкрдиреЗ рдЕрд╕рд▓реА рдЦреЗрддреЛрдВ рдХреЛ рдиреАрдЪреЗ рд░рдЦреЗрдВред

http://stackoverflow.com/questions/15738259/disabling-chrome-autofill

рдЖрдЧ рд▓рдЧрдиреЗ рдХреА рдШрдЯрдирд╛ рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди?

@antoinificseau рдХреНрдпрд╛ рдпрд╣ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╡рд┐рд▓рдп рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ?

рдпрд╣ рдПрдХ рд╕рдорд╛рди рдореБрджреНрджрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╕рдорд╛рди рдореВрд▓ рдХрд╛рд░рдг, рдЕрд▓рдЧ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐?)

рдореИрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдП рдЧрдП рдПрдиреАрдореЗрд╢рди рдореБрджреНрджреЛрдВ рдХреЛ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЯреЗрдХреНрд╕реНрдЯрдлрд┐рд▓реНрдб рдХрдВрдЯреЗрдирд░ рдХреА рдКрдВрдЪрд╛рдИ рдЗрдирдкреБрдЯ рдкрд░ рд╢реАрд░реНрд╖ рдорд╛рд░реНрдЬрд┐рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддреА рд╣реИред рдпрд╣ TextField рдХрдВрдЯреЗрдирд░ рдХреЗ рдиреАрдЪреЗ 14px рддрдХ рдлреИрд▓реА рд╣реБрдИ рд╣реИред рдпрд╣ рдХрд╛рдлреА рд╕реАрдзрд╛ рдХрд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╕реНрд╡рдд: рдкреВрд░реНрдгрддрд╛ рдХреЗ рд╕рд╛рде рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ:

screen shot 2016-06-22 at 9 58 04 am
screen shot 2016-06-22 at 9 58 16 am
screen shot 2016-06-22 at 9 58 27 am
screen shot 2016-06-22 at 9 58 34 am

рдпрд╣ рдЬрд▓реНрдж рд╣реА рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛;)

image

рдЕрдЪреНрдЫрд╛ @nathanmark , рдзрдиреНрдпрд╡рд╛рдж !!

рдФрд░ рдХреНрдпрд╛ рдЖрдкрдиреЗ рдПрдХ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рд▓реЗрдмрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдХ рдХрд┐рдпрд╛ рдерд╛ рдЬрдм рдХреНрд░реЛрдо рдСрдЯреЛрдлрд┐рд▓реНрд╕ рдХреЛ рдкреЗрдЬ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдП рдмрд┐рдирд╛ рднреА?

рдпрд╣ рдЕрднреА рднреА рдПрдХ рдмрд╣реБрдд рджрд░реНрджрдирд╛рдХ рдореБрджреНрджрд╛ рд╣реИред

рдореИрдВрдиреЗ рд╡реЗрдирд┐рд▓рд╛-рдСрдЯреЛрдлрд┐рд▓-рдЗрд╡реЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреЛ рдЕрднреА рдХрд╛рдо рдирд╣реАрдВ рдЖрдпрд╛ред

рдореИрдВ redux-form (рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдПрдХ рдмрджрд╕реВрд░рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд╕рд╛рде рдЖрдпрд╛ (рдмрд╕ рдЕрдкрдиреЗ рд▓реЙрдЧрд┐рди рдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЕрдиреНрдп рд░реВрдкреЛрдВ рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ)ред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдХреНрд░реЛрдо рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдЬрдм рдореИрдВрдиреЗ рдПрдХ рдЫрд┐рдкрд╛ рд╣реБрдЖ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рд╛ рддреЛ рдХреНрд░реЛрдо рдиреЗ рдкреВрд░реЗ рдлреЙрд░реНрдо рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ (рдЬрдм рддрдХ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рдЫрд┐рдкрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛: рдХреЛрдИ рднреА рдХреНрд░реЛрдо рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛)ред

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ 4 (: рдирд┐рд░рд╛рд╢:) рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред 2 рдХреНрд░реЛрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд░реВрдк рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ (рд╕реНрд╡рдд: рдкреВрд░реНрдг = рдмрдВрдж рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛) рдФрд░ рдХреНрд░реЛрдо рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП 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 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ autocomplete рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВрдиреЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди ( "off" ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рди рдХрд┐ js рдореВрд▓реНрдп ( {'off'} ) рдХрд╛ред

рдпрджрд┐ рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд╛рдирдХреЛрдВ рдФрд░ рдирд┐рд░рдВрддрд░рддрд╛ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдмрдбрд╝реА рдмрд╛рдд рд╣реИред

рдпрд╣ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдЬрд╛рдБрдЪ рдХреА рдХрд┐ рдХреНрдпрд╛ рдШрдЯрдХ рдорд╛рдЙрдВрдЯ рд╣реЛрдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд╕реНрд╡рдд: рдкреВрд░реНрдг рд╣реИред
рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдореИрдВ рдкрд╛рд╕рд╡рд░реНрдб рдлрд╝реАрд▓реНрдб рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛ред
рдПрдХ рдмрд╛рд░ hasValue рд╕рд╣реА рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдлреНрд▓реЛрдЯрд┐рдВрдЧ рд▓реЗрдмрд▓ рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

componentDidMount() {
    setTimeout(() => {
        if(this.refs.username.getValue()) {
            this.refs.password.setState({...this.refs.password.state, hasValue: true})
        }
    }, 100)
}

рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛ред :)

рдореБрдЭреЗ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рд▓реЗрдмрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛ рдЬрдм рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рднрд░рд╛ рдЧрдпрд╛ рдерд╛ред
`

setTimeout (рдлрд╝рдВрдХреНрд╢рди () {
var рдСрдЯреЛрдлрд╝рд┐рд▓реНрдб = document.querySelectorAll ('рдЗрдирдкреБрдЯ # рдкрд╛рд╕рд╡рд░реНрдб: -webkit-autofill');
рдЕрдЧрд░ (рд╕реНрд╡рддрдГ рдкреВрд░реНрдг) {
редред $ ( "рдЗрдирдкреБрдЯ [рдкреНрд░рдХрд╛рд░ = рдкрд╛рд╕рд╡рд░реНрдб]") рдорд╛рддрд╛-рдкрд┐рддрд╛ () addClass ( "-рдЧрдВрджрд╛ рд╣реИ");
}
}, 500);
`
рдпрд╣ рдЕрдВрдд рдореЗрдВ рддреИрдпрд╛рд░ рдЖрдкрдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрдВрджрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╡рд░реНрдЧ "рд╣реИ-рдЧрдВрджрд╛" рд╡рд╣ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рд▓реЗрдмрд▓ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдЕрднрд┐рдХреНрд░рд┐рдпрд╛-рдпреВрдЖрдИ рдХреЗ рд╕рд╛рде Redux-form рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдЖрд╡рд╢реНрдпрдХ рдЗрдирдкреБрдЯ рдХреЗ рдареАрдХ рдмрд╛рдж рдирдХрд▓реА рдЗрдирдкреБрдЯ рд╣реИред

  <TextField
     {...password}
     type="password"
     placeholder={formatMessage(messages.loginPasswordPlaceholder)}
     disabled={submitting}
   />
   <Icon name="password" className={theme.icon}/>
   <input className={theme.hiddenInput} type="password" />

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ 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} />
    }
}

рдлрд┐рдХреНрд╕ рдХрд╛ рдкрд┐рдЫрд▓рд╛ рдкреЛрд░реНрдЯ рд╕рд┐рд░реНрдл рд░рд┐рдПрдХреНрдЯ 15.6.0 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреЛрдИ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ?

[FYI рдХрд░реЗрдВ: рдКрдкрд░ "рдореБрдЭреЗ рднреА" рдкреЛрд╕реНрдЯ рд╣рдЯрд╛ рджреА рдЬрд╛рдПрдЧреА - рдХреГрдкрдпрд╛ рдЪрд░реНрдЪрд╛ рдХреЗ рдмрдЬрд╛рдп рдкрд▓реНрд╕ рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред]

@mbrookes рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛

@Stupidism рд╡рд┐рд╡рд░рдг?

рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рдЖрдкрдиреЗ 2 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛ред https://github.com/callemall/material-ui/issues/718#issuecomment -167445748

@Stupidism рдордЯреЗрд░рд┐рдпрд▓-рдпреВрдЖрдИ рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг, рд░рд┐рдПрдХреНрдЯ рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг, рдХреНрдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ / рд╕рдВрд╕реНрдХрд░рдг?

  "name": "material-ui",
  "version": "0.18.3",
  "name": "react",
  "version": "15.6.0",



md5-f7a2844706b5476282e07a6c64e29edb



Google Chrome   59.0.3071.86 (Official Build) (64-bit)
OS  Linux
JavaScript  V8 5.9.211.31

image

: 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)
  }

рдХреНрд░реЛрдо рдСрдЯреЛрдлрд╝рд┐рд▓реНрдб рдкрд╛рд╕рд╡рд░реНрдб рдлрд╝реАрд▓реНрдб рд╕реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ
https://stackoverflow.com/questions/35049555/chrome-autofill-autocomplete-no-value-for-password

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ v1-рдмреАрдЯрд╛ рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд░рд╣рд╛ рд╣реВрдВ, рдореБрджреНрджреЗ рдХреЛ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдиреНрдирдпрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рддрдм рддрдХ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрдм рддрдХ рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╕реБрдирддреЗред рдпрд╣рд╛рдБ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

image
рддреНрд░реБрдЯрд┐ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ ...
[email protected]
[email protected]
рдХреНрд░реЛрдо 60.0.3112.90

@artalar рдмрд╕ componentDidMount рд╕рдорд╛рдзрд╛рди O (тИй_ O) O рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ

@Stupidism рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ 1-2 рд╕рд╛рд▓ рдкреБрд░рд╛рдиреЗ рд╣реИрдВ ...
Btw, рдпрд╣ рдмрдЧ рдХреЗрд╡рд▓ рдХреНрд░реЛрдо рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реИ :)

@ рдЗрд╡рд╛рди-рдкрд░реБрд╢реЗрд╡ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░реЗрдл рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рддреЛ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реБрдИ рдпрд╛ рдирд╣реАрдВ?

рдпрд╣рд╛рдБ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, Im рд╕реНрдерд╛рдиреАрдпрд╕реНрдЯреЛрд░реЗрдЬ рд╕реЗ рдорд╛рдиреЛрдВ рдХреЛ рднрд░рддрд╛ рд╣реИ рдпрджрд┐ рд╡реЗ рдХрдВрдкреЛрдиреЗрдВрдЯрдбрд┐рдорд╛рдЙрдВрдЯ рдкрд░ рдореМрдЬреВрдж рд╣реИрдВ, рдФрд░ рд╕рднреА рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рд╣реИред

рдЕрднреА рднреА рддрдп рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рд╣реИ ...

рдореИрдВ рдзрд╛рдЧреЗ рдХреЛ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдореБрджреНрджрд╛ 2 рд╕рд╛рд▓ рдкреБрд░рд╛рдирд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЕрдм v1-рдмреАрдЯрд╛ рд╢рд╛рдЦрд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдкреНрд░рдЬрдирди рдЙрджрд╛рд╣рд░рдг рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ v1-рдмреАрдЯрд╛ рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред

рдЕрдм 3 рд╕рд╛рд▓ рд╣реЛ рдЧрдП рд╣реИрдВред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдирд╡реАрдирддрдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдпреВрдЖрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдореМрдЬреВрдж рд╣реИред

@tschaub Haha, ios рдкреЛрдЬрд┐рд╢рди-рдлрд┐рдХреНрд╕реНрдб рдЗрдирдкреБрдЯ рдХреА рддрд░рд╣ рдХреЗрдВрджреНрд░рд┐рдд рд╕рдорд╕реНрдпрд╛ рд╣реЛ рдЬрд╛рддреА рд╣реИред

@tsmirnov рд╕рдордп рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдЯрдХ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред ЁЯШЬ

рдЗрд╕ рдмрдЧ рдХрд╛ рдПрдХ рд╕реАрдПрд╕рдПрд╕ рд╕рдорд╛рдзрд╛рди рд╣реИ

// Selects label that comes right after the autofilled input
input:-webkit-autofill + label {
    // Insert your active label styles
}

рд╣реЗрдпрд░ рдпреВ рдЧреЛ:

image

рдкреАрд▓рд╛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЦреЗрддреЛрдВ рдХреЛ рд╕реНрд╡рдд: рд╕реНрдлреВрд░реНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╛рд╕рд╡рд░реНрдб рднрд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдмрд▓ рдЕрднреА рднреА рд╣реИред

рдореИрдВ рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЗрд╕ рдмрдЧ рдХрд╛ рдПрдХ рд╕реАрдПрд╕рдПрд╕ рд╕рдорд╛рдзрд╛рди рд╣реИ

// Selects label that comes right after the autofilled input
input:-webkit-autofill + label {
    // Insert your active label styles
}

рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдорддрд▓рдм рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдЗрд╕ рдмрдЧ рдХрд╛ рдПрдХ рд╕реАрдПрд╕рдПрд╕ рд╕рдорд╛рдзрд╛рди рд╣реИ

// Selects label that comes right after the autofilled input
input:-webkit-autofill + label {
    // Insert your active label styles
}

рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдорддрд▓рдм рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

: -webkit-autofill рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рддрдГрднрд░рдг рдлрд╝реАрд▓реНрдб рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред рдЗрдирдкреБрдЯ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдЕрдкрдирд╛ рд▓реЗрдмрд▓ рд░рдЦреЗрдВ рдФрд░ рдЗрд╕реЗ рдЪреБрдиреЗрдВ: -webkit-autofill рдЪрдпрдирдХрд░реНрддрд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рд╕рд╣рд╛рдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди html рд╕рдВрд░рдЪрдирд╛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

рдЗрд╕ рдмрдЧ рдХрд╛ рдПрдХ рд╕реАрдПрд╕рдПрд╕ рд╕рдорд╛рдзрд╛рди рд╣реИ

// 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

рдЗрд╕ рдмрдЧ рдХрд╛ рдПрдХ рд╕реАрдПрд╕рдПрд╕ рд╕рдорд╛рдзрд╛рди рд╣реИ

// 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
}

рдЙрд╣, @ рдХрд┐рд╢рди 3 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЦреЛ рдЧрдП рд╣реИрдВред MDL рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ -> https://github.com/google/material-design-lite/issues/4827 -

(рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдПрдордбреАрдПрд▓ рдЬрд┐рдо рдорд░ рдЪреБрдХрд╛ рд╣реИ, рд╢рд╛рдпрдж рдЖрдк рд╕рдм рдХреЗ рдмрд╛рдж рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рдЖрдП рд╣реИрдВ!)

рдЖрд╣! рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рдЙрд▓рдЭрдиред : рд╣рдБрд╕рдирд╛: @mbrookes рдПрдХ рдкреНрд░рд╢реНрди: рдХреНрдпрд╛ рд╣рдо CDN рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде HTML рдореЗрдВ рд╕реАрдзреЗ рд╕рд╛рдордЧреНрд░реА UI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рдХрднреА рдирд╣реАрдВ рд▓рдЧрд╛ рдХрд┐ рдПрдордбреАрдПрд▓ рдорд░ рдЪреБрдХрд╛ рд╣реИ: рд░реЛрдирд╛:

@ kishan3 рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдбреЙрдХреНрд╕ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкреВрд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреА рд╣реЛрдЧреА, рдХрдо рд╕реЗ рдХрдо рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рддрдХ рдпрд╣ рдХреИрд╢ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЬрдмрдХрд┐ рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдмрдирд╛рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдЙрдкрд╛рдп рд╣реИ?

рдпрд╣ рд╕рдорд╕реНрдпрд╛ v0.x рдХреЛ рдЪрд┐рдВрддрд┐рдд рдХрд░рддреА рд╣реИред

@oliviertassinari рдпрд╣ рд╕реНрдЯрд┐рд▓

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдПрдХ рдбреНрд░реЙрдкрдбрд╛рдЙрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреНрд░реЙрдкрдбрд╛рдЙрди рдореЗрдВ рдХреБрдЫ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдореВрд▓реНрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЯреЗрдХреНрд╕реНрдЯрдлреАрдб рд▓реЗрдмрд▓ рдХреЛ рдлреНрд▓реЛрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдЬреИрд╕рд╛ рдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЕрдЧрд░ рдореИрдВ null рд╕рд╛рде TextField рдорд╛рдиреЛрдВ рдХреЛ рдЕрдВрдХрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдирдпрд╛ рдорд╛рди рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдирд╛рд╡ рдирд╣реАрдВ рдЪрд▓реЗрдЧреАред null рдмрдЬрд╛рдп рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд░рд╛рдЬреНрдп рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдХреЗ рдлрд┐рдХреНрд╕реНрдб

рдЕрдЧрд░ рдХреЛрдИ рдЕрднреА рднреА рдпрд╣рд╛рдБ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдЗрд╕ рдкреНрд░реЛрдк рдХреЛ InputLabelProps={{ shrink: true }} TextField рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдкрд░ рдкреНрд░рднрд╛рд╡

@ рдЯреЙрдо-рдХреЙрди рдзрдиреНрдпрд╡рд╛рдж рдЖрджрдореА, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛

screen shot 2019-01-24 at 10 47 44 pm
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА 2019 рдореЗрдВ рдореМрдЬреВрдж рд╣реИ ...

рдЕрдЧрд░ рдХреЛрдИ рдЕрднреА рднреА рдпрд╣рд╛рдБ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдЗрд╕ рдкреНрд░реЛрдк рдХреЛ InputLabelProps={{ shrink: true }} TextField рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдкрд░ рдкреНрд░рднрд╛рд╡
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд▓рдЭрди рдореЗрдВ рдерд╛ рдФрд░ рдЖрдкрдиреЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рджреА! рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╕рдорд╛рдзрд╛рди!

рдпрд╣ рдПрдХ v0.x рд╕рдорд╕реНрдпрд╛ (2015) рд╣реИ, рдХреГрдкрдпрд╛ # 14427 рджреЗрдЦреЗрдВред

рдЗрд╕ рдмрдЧ рдХрд╛ рдПрдХ рд╕реАрдПрд╕рдПрд╕ рд╕рдорд╛рдзрд╛рди рд╣реИ

// Selects label that comes right after the autofilled input
input:-webkit-autofill + label {
    // Insert your active label styles
}

@ozturkcangokkaya рд╣рд╛рдп рдпрд╣ css рд╕рдорд╛рдзрд╛рди рдХреНрд░реЛрдо рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдлрд╛рдпрд░рдлреЙрдХреНрд╕ рдореЗрдВ рдЕрдкрдирд╛ рдлреЙрд░реНрдо рдЪреЗрдХ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рд▓реЗрдмрд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рд╡реЗрдмрдХрд┐рдЯ-рдСрдЯреЛрдлрд┐рд▓ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЛ рдХреНрдпреЛрдВ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ?

рдХреГрдкрдпрд╛ v4 рдХреЗ рд▓рд┐рдП # 14427 рджреЗрдЦреЗрдВред

рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рднреМрддрд┐рдХрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдВ рдФрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЖрдкрдХреЛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд╕рд╛рде рдЖрдирд╛ рд╣реИ рдФрд░ Google рдХреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд░реБрдЪрд┐ рдирд╣реАрдВ рд╣реИред

рдЕрдЧрд░ рдХреЛрдИ рдЕрднреА рднреА рдпрд╣рд╛рдБ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдЗрд╕ рдкреНрд░реЛрдк рдХреЛ InputLabelProps={{ shrink: true }} TextField рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдкрд░ рдкреНрд░рднрд╛рд╡

рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: 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 }}
              />

рдореИрдВрдиреЗ рдЕрдкрдиреА рдкреНрд░реЙрдмреНрд▓рдо рдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рджрд░реНрдЬ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдлрд┐рд░ рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЯреЗрдХреНрд╕реНрдЯ рдлреАрд▓реНрдб рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рднрд░ рд░рд╣рд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЬрдм рдореИрдВ рдиреЗрд╕реНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рд░рд┐рдбреНрдпреВрдХреНрд╕ рдмрд┐рд╣реЗрд╡рд┐рдпрд░ рдПрдХ рдЬреИрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рдореИрдВ рджреЛ рдиреЗрд╕реНрдЯреЗрдб рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдорд┐рд▓рд╛рдХрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд╣реАрдВ рднрд░ рд░рд╣рд╛ рд╣реВрдВред

image

рдореИрдВрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдерд╛ред
image

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рд╛рдордЧреНрд░реА-UI рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (v4.9.0) рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

anthony-dandrea picture anthony-dandrea  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ericraffin picture ericraffin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rbozan picture rbozan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zabojad picture zabojad  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mattmiddlesworth picture mattmiddlesworth  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ