Samx Here
n1udSecurity


Server : Apache
System : Linux webd348.cluster026.gra.hosting.ovh.net 5.15.148-ovh-vps-grsec-zfs-classid #1 SMP Thu Feb 8 09:41:04 UTC 2024 x86_64
User : hednacluml ( 122243)
PHP Version : 8.3.9
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
Directory :  /home/hednacluml/jobs/plugins/auto/saisies/javascript/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/hednacluml/jobs/plugins/auto/saisies/javascript/saisies_textarea_counter.js
/*!
  Scampi textarea-counter
  Décompte les caractères restants dans les éléments textarea disposant d’un maxlength
  Ajoute des attributs aria pour annoncer le nombre de caractères restant
*/
var Scampi = Scampi || {};

Scampi.textareaCounter = function textareaCounter() {
  var textAreaFields = document.querySelectorAll("textarea[maxlength]");
  var stepPolite = 100;
  var stepAssertive = 20;

  Array.prototype.forEach.call(textAreaFields, function (textarea) {
    var idTextarea = textarea.id;
    if(!document.querySelector("#"+idTextarea + "-counter")) {
      var maxLength = textarea.getAttribute("maxlength");
      var messageLength = textarea.value.length;
      var activeValue = countRest(maxLength, messageLength);
      textarea.setAttribute("aria-describedby", idTextarea + "-counter");
      textarea.insertAdjacentHTML("afterend", "<p class='textarea-counter' id='" + idTextarea + "-counter'><span class='textarea-counter-nb'>" + activeValue + "</span> " + saisies_caracteres_restants + "</p>");
      textarea.addEventListener("input", handleInput);
      textarea.addEventListener("keypress", handleInput);
    }
  });

  function handleInput(evt) {
    textarea = evt.target;
    paragraph = textarea.nextElementSibling;
    updateValue(textarea, paragraph);
  }

  function countRest(maxlength, messageLength) {
    return maxlength - messageLength;
  }

  function countStepPolite(maxLengthValue) {
    return maxLengthValue - stepPolite;
  }

  function countStepAssertive(maxLengthValue) {
    return maxLengthValue - stepAssertive;
  }

  function updateAria(maxLengthValue, messageLength, paragraph) {
    politeFlag = countStepPolite(maxLengthValue);
    assertiveFlag = countStepAssertive(maxLengthValue);

    if (messageLength < politeFlag) {
      paragraph.removeAttribute("aria-live");
      paragraph.removeAttribute("aria-atomic");
    }
    else if (messageLength >= politeFlag && messageLength < assertiveFlag) {
      paragraph.setAttribute("aria-live", "polite");
      paragraph.setAttribute("aria-atomic", "true");
    }
    else if (messageLength >= assertiveFlag) {
      paragraph.setAttribute("aria-live", "assertive");
      paragraph.setAttribute("aria-atomic", "true");
    }
  }

  function updateValue(textarea, paragraph) {
    var maxLength = textarea.getAttribute("maxlength");
    var messageLength = textarea.value.length;
    var counter = paragraph.querySelector(".textarea-counter-nb")

    counter.innerText = countRest(maxLength, messageLength);
    updateAria(maxLength, messageLength, paragraph);
  }
}

jQuery(function(){
  Scampi.textareaCounter();
  onAjaxLoad(Scampi.textareaCounter);
});

SAMX