ConectTheDots314
@ConectTheDots314

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

jQueryで数値かどうかを判定して表示させたい

Q&A

Closed

解決したいこと

表示させるという意味では解決しているが、自分が書いたコードだとなぜ動かないかがわからない。

①試したが実装できなかったコード

参考(https://javascript.programmer-reference.com/jquery-isnumeric/)

        $("#jsi-q1").on("click", function () {
          let myAge = "a";
          let result = $.isNumeric(myAge);

          if (myAge < 2) {
            alert(myAge + "歳のあなたは乳児でちゅ。");
          } else if (2 <= myAge <= 6) {
            alert(myAge + "歳のあなたは幼児でちゅ。");
          } else if (7 <= myAge <= 12) {
            alert(myAge + "歳のあなたは小学生だよ。");
          } else if (13 <= myAge <= 15) {
            alert(myAge + "歳のあなたは中学生だぜ。");
          } else if (16 <= myAge <= 18) {
            alert(myAge + "歳のあなたは高校生っす。");
          } else if (19 <= myAge <= 22) {
            alert(myAge + "歳のあなたは大学生です。");
          } else if (23 <= myAge <= 59) {
            alert(myAge + "歳のあなたは社会人でございます。");
          } else if (60 <= myAge <= 99) {
            alert(myAge + "歳のあなたは高齢者じゃ。");
          } else if (100 <= myAge) {
            alert("すごい。");
          } else if (result === false) {
            alert("ちゃんといれてください。");
          }
        });

②実装できたコード

参考(https://dev-lib.com/jquery-number-check/#jQuery)

        $("#jsi-q1").on("click", function () {
          let myAge = "a";

          if ($.isNumeric(myAge)) {
            if (myAge < 2) {
              alert(myAge + "歳のあなたは乳児でちゅ。");
            } else if (2 <= myAge <= 6) {
              alert(myAge + "歳のあなたは幼児でちゅ。");
            } else if (7 <= myAge <= 12) {
              alert(myAge + "歳のあなたは小学生だよ。");
            } else if (13 <= myAge <= 15) {
              alert(myAge + "歳のあなたは中学生だぜ。");
            } else if (16 <= myAge <= 18) {
              alert(myAge + "歳のあなたは高校生っす。");
            } else if (19 <= myAge <= 22) {
              alert(myAge + "歳のあなたは大学生です。");
            } else if (23 <= myAge <= 59) {
              alert(myAge + "歳のあなたは社会人でございます。");
            } else if (60 <= myAge <= 99) {
              alert(myAge + "歳のあなたは高齢者じゃ。");
            } else if (100 <= myAge) {
              alert("すごい。");
            }
          } else {
            alert("ちゃんといれてください。");
          }
        });

自分で試したこと

条件分岐がそれぞれ異なるが、①の場合最後にresultの真偽を確かめる場合でも同様に実装できると考えていますができません。
②のように書くしか方法はないのでしょうか?

教えていただけると理解が深まります。
よろしくお願いいたします。

0

1Answer

そもそも質問文のコードで正しく数値の範囲を判定することはできません.

const a = 8;
console.log(2 < a <=5);//-> true
console.log(2 < a && a <= 5);//->false

jQuery.isNumericはjQuery3.3以降Deprecatedです. 代用としてNumber.isFinite(value)(グローバルのisFiniteではなく)で判定してください.
数値かどうか確かめる前に大小を比較する行為は,バリデーション的にはお行儀がよくありません.暗黙的型変換で障害を生じる可能性もありますので,数値かどうかの判定は一番最初に行うべきです.

1Like

Comments

  1. お忙しい中丁寧に回答していただいてありがとうございます。大変参考になりました。

Your answer might help someone💌