Soy nuevo en Bootstrap y me quedé con este problema. Tengo un campo de entrada y tan pronto como ingreso solo un dígito, onChangese llama a la función from , pero quiero que se llame cuando presiono 'Enter cuando se ha ingresado el número completo. El mismo problema para la función de validación: llama demasiado pronto.
var inputProcent = React.CreateElement(bootstrap.Input, {type: "text",
//bsStyle: this.validationInputFactor(),
placeholder: this.initialFactor,
className: "input-block-level",
onChange: this.handleInput,
block: true,
addonBefore: '%',
ref:'input',
hasFeedback: true
});
javascript
twitter-bootstrap
reactjs
Bill Lumbert
fuente
fuente

onBlurevento.<input ref='reference' onKeyPress={(e) => {(e.key === 'Enter' ? doSomething(this.refs.reference.value) : null)}} />ref.<input onKeyPress={e => doSomething(e.target.value)}es suficiente.onKeyPressse activa. Es una mejora sutil de rendimiento.Puede usar onKeyPress directamente en el campo de entrada. La función onChange cambia el valor de estado en cada cambio de campo de entrada y después de presionar Enter se llamará a una función de búsqueda ().
fuente
onKeyPress={this.yourFunc}contrario, la función de flecha gruesa se volverá a crear en cada representación.onKeyPress={event => event.key === 'Enter' && this.search()}Al presionar Intro cuando el foco en un control de formulario (entrada) normalmente activa un
submitevento (onSubmit) en el formulario en sí (no en la entrada) para que pueda vincular suthis.handleInputal formulario onSubmit.Alternativamente, puede vincularlo al
blurevento (onBlur) en elinputque sucede cuando se elimina el foco (por ejemplo, tabular al siguiente elemento que puede enfocarse)fuente
onKeyPress.event.target.valueno está disponiblehandleInputmétodo del controlador . Hacer según mi respuesta los cubriría a ambos cuando el usuario presiona enter mientras se enfoca en la entrada y cuando activa unsubmitbotón / entrada.Puedes usar
event.keyfuente
Reaccionar usuarios, aquí hay una respuesta para completar.
Desea actualizar para cada pulsación de tecla u obtener el valor solo al enviar. Agregar los eventos clave al componente funciona, pero hay alternativas como se recomienda en los documentos oficiales.
Componentes controlados vs no controlados
Revisado
De los Documentos - Formularios y componentes controlados :
Si utiliza un componente controlado, deberá mantener actualizado el estado para cada cambio en el valor. Para que esto suceda, debe vincular un controlador de eventos al componente. En los ejemplos de los documentos, generalmente el evento onChange.
Ejemplo:
1) Enlazar controlador de eventos en el constructor (valor mantenido en estado)
2) Crear función de controlador
3) Crear función de envío de formulario (el valor se toma del estado)
4) Renderizar
Si usa componentes controlados , su
handleChangefunción siempre se activará para actualizar y mantener el estado correcto. El estado siempre tendrá el valor actualizado, y cuando se envíe el formulario, el valor se tomará del estado. Esto podría ser una estafa si su formulario es muy largo, porque tendrá que crear una función para cada componente, o escribir una simple que maneje el cambio de valor de cada componente.Sin control
De los documentos: componente no controlado
La principal diferencia aquí es que no utiliza la
onChangefunción, sino más bienonSubmitel formulario para obtener los valores y validar si es necesario.Ejemplo:
1) Enlazar controlador de eventos y crear referencia a entrada en constructor (no se mantiene ningún valor en estado)
2) Crear función de envío de formulario (el valor se toma del componente DOM)
3) Renderizar
Si utiliza componentes no controlados , no es necesario vincular una
handleChangefunción. Cuando se envía el formulario, el valor se tomará del DOM y las validaciones necesarias pueden ocurrir en este punto. No es necesario crear funciones de controlador para ninguno de los componentes de entrada también.Tu problema
Ahora, para su problema:
Si desea lograr esto, use un componente no controlado. No cree los controladores onChange si no es necesario. La
enterclave enviará el formulario y sehandleSubmitactivará la función.Cambios que debes hacer:
Elimine la llamada onChange en su elemento
Maneje el envío del formulario y valide su entrada. Debe obtener el valor de su elemento en la función de envío del formulario y luego validarlo. Asegúrese de crear la referencia a su elemento en el constructor.
Ejemplo de uso de un componente no controlado:
fuente
También puedes escribir una pequeña función de envoltura como esta
Luego consúmelo en tus entradas
fuente