diff --git a/assets/js/__tests__/upload.spec.ts b/assets/js/__tests__/upload.spec.ts
index 06d14d64..4647fbb4 100644
--- a/assets/js/__tests__/upload.spec.ts
+++ b/assets/js/__tests__/upload.spec.ts
@@ -58,6 +58,8 @@ describe('Image upload form', () => {
let scraperError: HTMLDivElement;
let fetchButton: HTMLButtonElement;
let tagsEl: HTMLTextAreaElement;
+ let tagsinputEl: HTMLDivElement;
+ let tagEl: HTMLSpanElement;
let sourceEl: HTMLInputElement;
let descrEl: HTMLTextAreaElement;
@@ -77,6 +79,18 @@ describe('Image upload form', () => {
+
+
+ "safe x"
+
+
+ "pony x"
+
+
+ "tag3 x"
+
+
+
`,
);
@@ -87,6 +101,8 @@ describe('Image upload form', () => {
remoteUrl = assertNotUndefined($$('.js-scraper')[1]);
scraperError = assertNotUndefined($$('.js-scraper')[2]);
tagsEl = assertNotNull($('.js-image-tags-input'));
+ tagsinputEl = assertNotNull($('.js-taginput'));
+ tagEl = assertNotNull($('.tag')); // ensure at least one exists
sourceEl = assertNotNull($('.js-source-url'));
descrEl = assertNotNull($('.js-image-descr-input'));
fetchButton = assertNotNull($('#js-scraper-preview'));
diff --git a/assets/js/upload.js b/assets/js/upload.js
index c31995bb..b9d2b3fa 100644
--- a/assets/js/upload.js
+++ b/assets/js/upload.js
@@ -174,12 +174,13 @@ function setupImageUpload() {
function createTagError(message) {
const buttonAfter = $('#tagsinput-save');
const errorElement = makeEl('span', { className: 'help-block tag-error' });
+
errorElement.innerText = message;
buttonAfter.parentElement.insertBefore(errorElement, buttonAfter);
}
function clearTagErrors() {
- const tagErrorElements = document.getElementsByClassName('tag-error');
+ const tagErrorElements = $$('.tag-error');
// remove() causes the length to decrease
while (tagErrorElements.length > 0) {
@@ -192,14 +193,17 @@ function setupImageUpload() {
// return false if any check fails
function validateTags() {
const tags = $$('.tag');
+
if (tags.length === 0) {
createTagError('Tag input must contain at least 3 tags');
return false;
}
const tagsArr = [];
+
for (const i in tags) {
let tag = tags[i].innerText;
+
tag = tag.substring(0, tag.length - 2); // remove " x" from the end
tagsArr.push(tag);
}
@@ -211,6 +215,7 @@ function setupImageUpload() {
let hasRating = false;
let hasSafe = false;
let hasOtherRating = false;
+
tagsArr.forEach(tag => {
if (ratingsTags.includes(tag)) {
hasRating = true;