我正在尝试制作一个简单的帖子创建器,其中包含标题,如果其中一个输入(标题,文本)为空(
更明确地说,如果标题为空,则按钮被禁用,如果文本为空,则按钮也被禁用,如果两者都不为空,则按钮变为启用状态。
value.length === 0;
),则我想使“post-btn”被禁用,其光标变为“not-allowed”。 我使用了forEach
和eventListener
编写了一个函数,但它实际上并没有起作用。我考虑另一种方法是为每个输入添加一个eventListener
,但我无法想象任何不需要编写大量if
语句的简短方法。因此,我决定寻求帮助,如果您可以更正我在这里犯的错误或帮助我编写一个全新的有效且易于理解的代码。更明确地说,如果标题为空,则按钮被禁用,如果文本为空,则按钮也被禁用,如果两者都不为空,则按钮变为启用状态。
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>
createPostBehavior()
)。我唯一要添加的更改是,在开始时应该将post-btn
初始化为禁用状态,因为两个输入都为空。 - marzelin