[JavaScript] Je souhaite limiter le traitement en vérifiant les éléments d'entrée lorsque le temps spécifié s'écoule lors de la mise au point.

[Ce que je veux demander]

Mais il a été implémenté vérifier le traitement dans l'élément d'entrée après un temps spécifié et lorsque le focus est éteint, et quitter la fonction JavaScript, afficher et afficher un message d'erreur deux fois dans l'alerte sera appelé à la fois pour le traitement il n'y a pas Sera fait.

[Ce que je veux réaliser]

Je souhaite émettre une alerte une seule fois. Je veux vérifier à chaque fois que je ne me concentre pas. Je veux vérifier même après le temps spécifié.

[Ce que vous avez mis en œuvre et ce que vous pensez]

main.js


function isTimecheck() {
   setTimeout("onAutoSave()",Temps spécifié);
}

function onAutoSave() {
    var result = true;
    var a =Éléments d'entrée.value; //Obtenez la valeur d'entrée de l'élément d'entrée.
    var maxLen = 20; //Nombre maximum de caractères: 20 dans l'exemple.
    if (a != '') {
        result = WordCountCheck(a, maxlen);
        if (result == false) {
            alert(Message d'erreur);
Éléments d'entrée.focus(); //Renvoyez le focus sur l'élément d'entrée.
            return false;
        }
    }
}
window.onload = function(){
    isTimeCheck();
}

check.js


function WordCountCheck(str, maxLength) {
    var i = 0; 
    var len = 0; //Stockez le nombre d'octets.
    str.value = rightTrim(str.value);//Supprimez l'espace droit inutile.
    var val = str.value;
    if(val !=""){
        for(; i<val.length; i++) {
S'il est demi-largeur, il fait 1 octet, alors ajoutez 1 à len.
S'il est pleine largeur, il fait 2 octets, ajoutez donc 2 à len.
        }
        if(maxLength < len){
            alert(Message d'erreur);
            str.focus(); //Renvoyez le focus sur l'élément d'entrée.
            return false;
        }
    }
}

Test.html


<TD>
    <textarea cols="" rows="" name="" style="" onBlur="WordCountCheck(this, 20);">Éléments d'entrée</textarea>
</TD>

Cette partie HTML

<TD>
    <textarea cols="" rows="" name="" style="" onChange="WordCountCheck(this, 20);">Éléments d'entrée</textarea>
</TD>

Dans ce cas, lorsque j'ai essayé avec les mêmes données que onBlur, le pop-up n'est apparu qu'une seule fois, mais si tel est le cas, la valeur change et un message d'erreur apparaît, puis le focus est éteint sans changer. Je ne suis pas satisfait car je ne peux pas le vérifier.

En outre, le processus de vérification est décrit dans un autre fichier js.

En guise de réponse, je me demande maintenant si ce qui suit est faisable. (1) Cochez uniquement onBlur, et s'il y a une erreur, quittez le processus au début de onAutoSave. (2) Empêchez le processus onBlur d'être appelé lorsque le temps spécifié s'est écoulé. ③ Si une erreur de vérification se produit dans celle appelée en premier par onBlur ou onAutoSave, le processus est quitté à ce stade (je pense que cela est possible si le processus de sortie peut être réalisé ...)

En premier lieu, dans le cas de cette implémentation, lequel de onBlur et onAutoSave sera exécuté en premier une fois le temps spécifié écoulé?

[Ce que j'ai essayé]

Lorsque j'ai essayé de créer la partie onBlur comme suit (répertoriée dans JS pour une visualisation facile), bien sûr, elle n'est pas vérifiée au moment de la perte de mise au point, et elle n'est pas vérifiée même après le temps spécifié. Il semble que onAutoSave a été appelé en premier, donc si une erreur de vérification se produit là-bas, j'ai essayé de définir la variable globale checkFlg sur true afin que le traitement onBlur ne soit pas effectué. Cependant, l'alerte apparaît deux fois.

onBlur="isLostFocusCheck(this);"
var checkFlg=false;
function isLostFocusCheck(str) {
    if(checkFlg==false) { //S'il y a une erreur de vérification lors de l'enregistrement automatique, checkFlg est vrai et cela doit être passé.
        WordCountCheck(str, 20);
    }
}

Recommended Posts

[JavaScript] Je souhaite limiter le traitement en vérifiant les éléments d'entrée lorsque le temps spécifié s'écoule lors de la mise au point.
Je veux limiter l'entrée en réduisant la plage de nombres
Je veux savoir si la chaîne de caractères spécifiée est prise en charge par le code de caractère cible
Je veux juger de la nécessité de tester en comparant les différences des fichiers de classe lors de la refactorisation de Java.
Je veux comprendre le flux des paramètres de demande de traitement Spring
Je veux rendre le cadre de la zone de texte rouge lorsqu'il y a une erreur de saisie
Un mémo lorsque vous souhaitez effacer la partie horaire de l'agenda
Je veux connaître le JSP du portlet ouvert lors du développement de Liferay
[Rails] Que faire lorsque l'image Refile n'est pas affichée lors de l'écriture du traitement au moment de l'erreur de routage
Je veux var_dump le contenu de l'intention
[JavaScript] Axios (ajax) ne peut pas obtenir le corps de la réponse au moment d'une erreur
Je veux connaître la réponse de l'application Janken
Je souhaite afficher le nom de l'affiche du commentaire
Je veux retourner la position de défilement de UITableView!
Je veux savoir quelle version de java le fichier jar que j'ai est disponible
[Java] Je souhaite écrire un traitement asynchrone à l'aide de Promise dans Java-Trial of Promise-like syntax of JavaScript-
Je souhaite modifier le paramètre de sortie du journal de UtilLoggingJdbcLogger
Je souhaite renvoyer plusieurs valeurs de retour pour l'argument saisi
[Ruby] Je souhaite inverser l'ordre de la table de hachage