<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css" integrity="sha512-+4zCK9k+qNFUR5X+cKL9EIR+ZOhtIloNl9GIKS57V1MyNsYpYcUrUeQc9vNfzsWfV28IaLL3i96P9sdNyeRssA==" crossorigin="anonymous" />
<div class='container card mt-4 p-4'>
<h1>Comments</h1>
<span>Bootstrap comment prototype + validation w/o regex</span>
<hr>
<form>
<div class="form-group">
<div class="form-group">
<input type="text" id="form-username" class="form-control mb-1" placeholder="Username">
<span class="text-danger" id="error-username" style="display: none"></span>
<textarea class="form-control mt-2" id="form-comment" rows="2" placeholder="Enter your comment here..."></textarea>
<span class="text-danger" id="error-comment" style="display: none"></span>
</div>
</div>
<button type="submit" id="submit" class="btn btn-primary float-right">Comment</button>
</form>
<hr>
<div id="comments">
</div>
</div>
.visible{
display: flex !important;
}
.invisible{
display: none !important;
}
document.getElementById("submit").addEventListener("click", function(event) {
event.preventDefault();
let validate = false;
let commentContent = document.getElementById("form-comment"),
commentHeader = document.getElementById("form-username"),
commentError = document.getElementById("error-comment"),
headerError = document.getElementById("error-username");
if(commentHeader.value.length == 0 || commentContent.value.length == 0){
if(commentHeader.value.length == 0){
commentHeader.classList.add("is-invalid");
headerError.classList.remove("invisible");
headerError.classList.add("visible");
headerError.innerHTML = "Username field is required.";
}else{
commentHeader.classList.remove("is-invalid");
headerError.classList.remove("visible");
headerError.classList.add("invisible");
}
if(commentContent.value.length == 0){
commentContent.classList.add("is-invalid");
commentError.classList.remove("invisible");
commentError.classList.add("visible");
commentError.innerHTML = "Comment field is required.";
}else{
commentContent.classList.remove("is-invalid");
commentError.classList.remove("visible");
commentError.classList.add("invisible");
}
}else{
commentHeader.classList.remove("is-invalid");
commentContent.classList.remove("is-invalid");
commentError.classList.remove("invisible");
headerError.classList.remove("invisible");
commentError.classList.remove("visible");
headerError.classList.remove("visible");
let comment = `<div id="comment" class="mt-2">
<div class="card p-4">
<!--<button type="button" class="btn btn-sm btn-dark">
<i class="fa fa-trash" aria-hidden="true"></i>
</button>-->
<div class="media">
<img src="https://pbs.twimg.com/profile_images/1259926100261601280/OgmLtUZJ_400x400.png" class="mr-3 rounded" style="height: 64px; width: 64px;">
<div class="media-body">
<h5 class="mt-1">${commentHeader.value}</h5>
<div id="commentContent">${commentContent.value}</div>
</div>
</div>
</div>
</div>`;
let comments = document.getElementById("comments");
comments.innerHTML += comment;
}
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.