J'essaie de créer un simple créateur d'article avec un titre, et je veux que le "post-btn" soit désactivé et que son curseur soit changé en "not-allowed" si l'une des entrées (titre, texte) est vide ( value.length === 0;
), j'ai écrit une fonction utilisant forEach
et un eventListener
mais cela n'a pas fonctionné, je pense à un autre moyen en ajoutant une eventListener
pour les deux entrées seules, mais je n'ai pas pu imaginer de moyen court de le faire sans écrire beaucoup de if
déclarations. J'ai donc décidé de demander de l'aide, si vous pouvez corriger les erreurs que j'ai faites ici ou m'aider avec un tout nouveau code efficace et compréhensible. Pour rendre les choses plus claires, je dirais : si le titre est vide, les boutons sont désactivés ; si le texte est vide, les boutons sont également désactivés ; si aucun des deux n'est vide, les boutons sont activés.
let createPostBehavior = function(){
let inputs = document.querySelectorAll('.post-input');
let postBtn = document.querySelector('.post-btn');
inputs.forEach(function(inp){
inp.addEventListener('input', function(e){
if(e.target.value.length === 0) {
postBtn.disabled = true;
postBtn.style.cursor = 'not-allowed';
} else if (e.target.value.length > 0) {
postBtn.disabled = false;
postBtn.style.cursor = 'pointer';
}
})
})
}
createPostBehavior();
<div class="create-post-wrapper">
<div>
<p class="sub-headline">Create a new post</p>
</div>
<div>
<input class="post-input" type="text" placeholder="Title">
</div>
<textarea id="input" class="post-input"></textarea>
<div class="buttons-wrapper">
<button class="post-btn">Post</button>
</div>
</div>