Comment valider la valeur du curseur lorsque la souris part, au lieu de valider toutes les valeurs avant le départ de la souris ?
P粉129731808
P粉129731808 2023-07-27 15:35:18
0
1
597
<p>J'ai un champ de saisie et un curseur, la plage du curseur est de 1 à 100. Comme j'ai également des interrupteurs à bascule et des menus déroulants, j'utilise l'événement onChange pour chaque champ au lieu d'utiliser un bouton de soumission, y compris le curseur. </p><p>Mais j'ai rencontré un problème, si j'essaie de changer le curseur de 1 à 50, toutes les valeurs de 1 à 50 sont soumises dans l'événement onChange. J'ai essayé d'utiliser l'événement onSlideEnd mais il affiche les anciennes valeurs (par exemple : lors de la sélection de 50 sur 1, il affiche 1 ; lors de la sélection de 20 sur 50, il affiche 50). </p><p>Je souhaite que lors du passage de 1 à 50, seuls 50 soient envoyés au backend dans handleSubmit. </p><p>J'ai essayé ce code mais il n'a pas fonctionné, aidez-nous à le résoudre.</p><p><br /></p> <pre class="brush:php;toolbar:false;">importer React, { useEffect, useState } depuis 'react'; importer { Slider } depuis " primereact/slider " ; importer {InputText} depuis "primereact/inputtext" ; //quelques importations const Config = () => { const [factorvalue, setFactorValue] = useState(1); const [isSliderDragging, setIsSliderDragging] = useState(false); useEffect(() => { fetchConfig(); }, []); const fetchConfig = async () => { essayer { // ceci est utilisé pour obtenir la valeur de configuration du backend à définir devant const réponse = attendre Service.getMaliciousFactorConfig(); si (réponse) { const malwareFactorValue = réponse[0].maliciousFactor || 1; setFactorValue(maliciousFactorValue); } } attraper (erreur) { console.log(erreur.message); } } ; const handleSliderChange = (événement) => { essayer{ const newValue = parseInt(event.value, 10); setFactorValue(nouvelleValue); handleSubmit (nouvelle valeur); }attraper(erreur){ console.log(erreur); } } ; const handleSliderDragEnd = (événement) => { setIsSliderDragging(faux); } ; const handleInputChange = (événement) => { const newValue = parseInt(event.target.value, 10); si (!isNaN(nouvelleValeur)) { setFactorValue(nouvelleValue); handleSubmit (nouvelle valeur); } autre { setFactorValue(""); } } ; const handleSubmit = async(value) => { essayer{ si (valeur >= 1 && valeur <= 100) { setValidationError(""); attendre ConfigService.setConfig(valeur); } }attraper(erreur){ console.log(erreur); } } ; retour ( {//code démo} <div className="displayFlex"> <label htmlFor="factor">Facteur :</label> <div> <InputText id="factor" value={factorvalue} onChange={handleInputChange} className="w-full" /> <Slider value={factorvalue} onChange={handleSliderChange} onSlideEnd={handleSliderDragEnd} className="w-full" min={1} max={100} /> </div> </div> {//du code} ); } ; exporter la configuration par défaut;</pre> <p><br /></p>
P粉129731808
P粉129731808

répondre à tous(1)
P粉262926195

Le rebond semble être la bonne solution pour vous. Lire la suite

Un hook React est disponible. ici.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal