les opérateurs javascript ne correspondent pas à l'entrée decimalx
Oct 22 2020
Je ne comprends pas pourquoi quand j'utilise la valeur de condition comme a > bmais cela ne fonctionne pas correctement, peut-être à cause de la valeur a = decimal. suivant mon code:
HTML
<input type="text" class="form-control" name="numberdays" id="numberdays" value="10.0/>
<input type="text" name="cutii" id="cutii" value="9.0">
<button class="btn btn-primary waves-effect" id="subcut" type="submit" disabled>
SCÉNARIO
cutifrom.addEventListener('input',()=>{
if (cutii.value > numberdays.value) {
subcut.removeAttribute('disabled');
}else{
subcut.setAttribute('disabled','disabled');
}
}) ;
le résultat est que mon bouton est désactivé, il ne devrait pas l'être.
voici mes js. en fait, j'utilise le sélecteur de date et je génère des nombres qui sont automatiquement générés. peut-être parce que c'est la condition que j'utilise, l'opérateur n'est pas détecté. JS pour datepicker
<script type="text/javascript">
$(document).ready(function(){ let $fromDate = $('#fromdate'), $toDate = $('#todate'); $fromDate.datepicker().on('change', function(){
$toDate.datepicker('option', 'minDate', $(this).val());
});
$toDate.datepicker().on('change', function(){ $fromDate.datepicker('option', 'maxDate', $(this).val()); });; }); $(function() {
let $fromDate = $('#fromdate'),
$toDate = $('#todate'),
$numberDays = $('#numberdays'),
$numberCuti = $('#cuti');
$fromDate.datepicker().on('change', function(){ $toDate.datepicker('option', 'minDate', $(this).val()); $numberDays.val(calculateDateDiff($toDate.val(), $(this).val()));
});
$toDate.datepicker().on('change', function(){ $fromDate.datepicker('option', 'maxDate', $(this).val()); $numberDays.val(calculateDateDiff($(this).val(), $fromDate.val()));
});
cutifrom.addEventListener('input',()=>{
if (parseFloat(cuti.value) >= parseFloat(numberdays.value)) {
subcut.removeAttribute('disabled');
}else{
subcut.setAttribute('disabled','disabled');
}
}) ;
function calculateDateDiff(endDate, startDate) {
if (endDate && startDate) {
let e = moment(endDate),
s = moment(startDate);
return e.diff(s, "days");
}
return null;
}
});
</script>
Réponses
3 semicolon Oct 23 2020 at 03:09
Votre valeur est de type String et la comparaison n'est pas comme Number, essayez de convertir la valeur en nombre et voyez si cela fonctionne.
Vous devez changer le code de ce formulaire:
cutifrom.addEventListener('input',()=>{
if (Number(cutii.value) > Number(numberdays.value)) {
subcut.removeAttribute('disabled');
}else{
subcut.setAttribute('disabled','disabled');
}
}) ;
Bonne chance :)