Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

2.2K
Views
¿Establecer min/max en TextField type="number"?

Estoy usando Material-UI v1.0.0-beta23 junto con redux-form y redux-form-material-ui . Tengo un Field que es un número de tipo y quiero establecer los valores mínimo y máximo en la etiqueta. Probé tanto inputProps como min/max y ninguno parece hacer lo que quiero. Miré el código fuente y no veo una forma obvia de hacer esto. ¿Es posible, y si es así, cómo?

Aquí está mi JSX mostrando cosas que he probado.

 <Field name="maxNodeSelectedCount" component={TextField} label="Max Node Selected Count" type="number" inputProps={{ min: 0, max: 10 }} min={11} max={20} format={formatOption} normalize={normalizeOption} {...propertyFieldDefaults} />

Así es como se ve el DOM:

 <input type="number" class="MuiInput-input-346 MuiInput-inputSingleline-349 MuiInput-inputDense-347" value="-3" name="options.maxNodeSelectedCount">
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

El campo de forma redux pasará accesorios al componente:

Todos los demás accesorios se pasarán al elemento generado por el componente prop.

TextField tiene una propiedad llamada InputProps que se puede usar para pasar accesorios al componente de entrada que representa. Esto también es cierto si está utilizando redux-form-material-ui . Su TextField es simplemente un contenedor para el componente material-ui.

El componente de Input material-ui tiene una propiedad llamada inputProps que se puede usar para pasar accesorios al elemento de input que representa.

Bien, entonces, ¿qué hago?

Debe pasar los accesorios por completo, desde Field , TextField , Input , hasta el elemento de input .

Entonces, si configuramos InputProps en Field, se pasará a TextField, que lo pasará al componente Input . Si el objeto que pasamos contiene un inputProps interno ('i' minúscula intencional), el componente Input lo pasará al elemento de input .

Un juego de proptato caliente:

Básicamente, defina un objeto inputProps dentro de InputProps y aplíquelo a Field :

 <Field name="maxNodeSelectedCount" component={TextField} label="Max Node Selected Count" type="number" InputProps={{ inputProps: { min: 0, max: 10 } }} format={formatOption} normalize={normalizeOption} {...propertyFieldDefaults} />
  • El campo pasa InputProps a TextField
  • TextField pasa el contenido de InputProps al componente Input
  • La entrada pasó el contenido de inputProps al elemento de input

Hay una advertencia con esto:

La implementación actual de TextField establece su propio valor para inputProps para que inputClassName se aplique al elemento de input .

Al entregar su propio valor de inputProps a TextField, sobrescribirá la versión aplicada por TextField, dejando inputClassName sin establecer. Si está utilizando inputClassName , deberá incluirlo en el objeto inputProps interno.

EDITAR: He enviado un problema y una solicitud de extracción para abordar esta advertencia en una versión futura.

over 4 years ago · Santiago Trujillo Report

0

Simplemente usa bien tus inputprops

 <TextField type="number" InputProps={{ inputProps: { max: 100, min: 10 } }} label="what ever" />

observe las mayúsculas y minúsculas en los accesorios de entrada

crédito a Ken Gregory

over 4 years ago · Santiago Trujillo Report

0

Puede usar inputProps para aplicar cualquier atributo al elemento de input nativo, incluidos min y max .

 <TextField type="number" inputProps={{ min: 4, max: 10 }} />

Editar: tenga en cuenta que los atributos min / max no impiden que el usuario escriba valores no válidos en TextField . Para restringir lo que el usuario puede escribir, puede validar el valor agregando el controlador onclick como se muestra a continuación:

 const min = 0; const max = 10; export default function BasicTextFields() { const [value, setValue] = useState<number>(); return ( <div> <TextField type="number" inputProps={{ min, max }} value={value} onChange={(e) => { var value = parseInt(e.target.value, 10); if (value > max) value = max; if (value < min) value = min; setValue(value); }} /> </div> ); }

Editar 47798104/set-min-max-on-textfield-type-number

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!