0

フォームで onsubmit と呼ばれる小さな jQuery 関数を使用して、ユーザー入力のクライアント側を検証したいと思います。フィールド #fname (名) で az、AZ、およびスペースのみを許可する必要があります。return false は、フォームの送信を停止することになっています。

function validateregister(){
    if (!($("fname") =~ [a-zA-Z ])) {
        return false;
    }
}

これは私のHTMLです:

<input type="submit" value="Join now!" id="registersubmit" class="paddingoutline2" onsubmit="return validateregister()">

もちろん、後でサーバー側でユーザー入力を検証します。フォームを送信すると、「内部サーバー エラー」が表示されます。これにより、validateregister() 関数でエラーが発生したと思われます。何か間違っていることでも?私がjQueryにかなり慣れていない場合は、どんな助けでも大歓迎です。

ありがとう!

4

2 に答える 2

5

あなたが欲しいのは

function validateregister(){
    return /^[a-zA-Z ]+$/.test($('#fname').val());
}

valおよびtest関数の使用を示唆するセレクターの修正とは別に、自由に正規表現を変更しました。

  • ^テストが文字列全体をカバーするように$強制します
  • +は少なくとも 1 文字が必要です

しかし、ユーザーに本名を入力してもらいたい場合、この正規表現は厳しすぎる可能性があることに気付いていますか? たとえば、あなたのものは合格しません...

于 2013-03-28T14:42:22.963 に答える
1

この方法で正規表現を使用する必要があります。

function validateregister(){
    var nameRgx = /[a-zA-Z]/;
    var phoneRgx = /[0-9]/;
    if (!nameRgx.test($("#fname").val())) {
       return false;
    }
    if (!phoneRgx.test($("#phone").val())) {
       return false;
    }
}

そして、要素を#id 表記または.クラス表記のいずれかで参照するようにしてください。あなたのコードでは、適切な方法で elem を参照していません。

^ ---->Start of a string. 
$ ---->End of a string. 
. ----> Any character (except \n newline) 
{...}----> Explicit quantifier notation. 
[...] ---->Explicit set of characters to match. 
(...) ---->Logical grouping of part of an expression. 
* ---->0 or more of previous expression. 
+ ---->1 or more of previous expression. 
? ---->0 or 1 of previous expression; 
       also forces minimal matching when an expression might 
       match several strings within a search string. 

正規表現の記述に関する詳細情報

于 2013-03-28T14:50:30.120 に答える