6

私より少し賢い人がこの機能を手伝ってくれませんか? その目的は、フォームでのテキスト入力、つまり 0 ~ 9、ダッシュ、およびドットのみを受け入れる電話番号フィールドを検証することです。HTMLは関数を正常に呼び出します。

function validateFeedback() {
    var phone = document.getElementById("phone");
    var validNumber = "0123456789.-";
    for (i = 0; i < phone.length; i++); {
        if (validNumber.indexOf(phone.charAt(i)) == -1); {
            alert("You have entered an invalid phone number");
            return false;
        }
    }
    return true;
}

助けてくれてありがとう。

4

7 に答える 7

9

正規表現が役立つはずです;)

このコードを実行しようとしていないのは残念ですが、問題ないはずです。

function validateFeedback(){
    var phone = document.getElementById("phone");
    var RE = /^[\d\.\-]+$/;
    if(!RE.test(phone.value))
    {
        alert("You have entered an invalid phone number");
        return false;
    }
    return true;
}
于 2012-05-16T10:22:28.990 に答える
1

このようなものには正規表現を使用したいと思います。フレームワークなしですべての主要なブラウザで動作するはずの関数の私の変更されたバージョンを見てください。

function validateFeedback() {
    // Get input
    var phone = document.getElementById("phone"),
        // Remove whitespaces from input start and end
        phone = (phone || '').replace(/^\s+|\s+$/g, ''),
        // Defined valid charset as regular expression
        validNumber = "/^[0123456789.-]+$/";

    // Just in case the input was empty
    if (phone.length == 0) {
        // This depends on your application - is an empty number also correct?
        // If not, just change this to "return false;"
        return true;
    }

    // Test phone string against the regular expression
    if (phone.match(validNumber)) {
        return true;
    }

    // Some invalid symbols are used
    return false;
}
于 2012-05-16T10:47:23.453 に答える
1

テキスト入力がフォームの場合は、フォームIDと要素IDを使用してより直接参照できます。

var phone = document.<formId>.phone;

テストしたいのは要素の値なので、次のものが必要です。

var phone = document.<formName>.phone.value;

関数はおそらくフォームの送信リスナーから呼び出されるため、次を使用して作業をより効率的にすることができます。

<form onsubmit="return validateFeedback(this);" ...>

また、電話番号には「-」や「。」ではなく、数字しか含まれていないようです。文字なので、0〜9の数字のみをテストする必要があります。

したがって、関数は次のようになります。

function validateFeedback(form) {
  var phoneValue = form.phone.value;

  // Use a regular expression to validate the value
  // is only digits
  if (/\D/.test(phoneValue) {
    // value contains non-digit characters
    // advise user of error then
    return false;
  }
}

長さも妥当であることをテストすることもできますが、場所や地域コードまたは国コードの用途、および携帯電話、固定電話、その他の番号に応じて、場所によって電話番号の長さが異なることに注意してください。

于 2012-05-16T10:17:56.787 に答える
1

これを試してください

function validateFeedback(value) {
    var length = value.length;
    chk1="1234567890()-+ ";
    for(i=0;i<length;i++) {
        ch1=value.charAt(i);
        rtn1=chk1.indexOf(ch1);
        if(rtn1==-1)
            return false;
        }
        return true;
    }
于 2012-05-16T10:15:47.233 に答える
1

これを行うには正規表現を使用する必要があると思います。何かがこれをリンクします:

function validateFeedback() {
  var phone = document.getElementById("phone").value;
  var reg = new RegExp("[0-9 .-]*"); 

  return reg.test(phone);
}
于 2012-05-16T10:16:38.677 に答える
1
function phonenumber(inputtxt)
{
  var phoneno = /^\d{10}$/;
  if((inputtxt.value.match(phoneno))
        {
      return true;
        }
      else
        {
        alert("message");
        return false;
        }
}
于 2014-02-10T14:36:11.067 に答える