2016-11-15 9 views
-2

私はISBNルックアップを持っています。それは10文字でなければなりません。私はそれを確認するカスタム検証ルールがあります。しかし、私の多くの顧客はコピーして貼り付けています。その時、彼らは始めや終わりに余分なスペースを取る傾向があります。ですから、文字列の前後の空白をチェックして、最初に更新したいと思います。そして、正規表現を実行します。失敗した場合(アルファベットまたは10桁以上でない場合)、エラーメッセージが表示されます。空白文字を削除し、値を更新する前に更新規則

jQuery.validator.addMethod(
"isbn10rule", 
function(value, element) { 
    var isValid = /^[a-zA-Z0-9]{10}$/.test(value); 
    return this.optional(element) || isValid; 
}, 
"Must be exactly 10 characters and only letters and numbers" 
); 

私はスコープ制限値に対してテストの答えをたくないよ:

は、ここに私の現在のカスタム検証ルールです。検証が実行される前に値を更新する必要があります。

例:文字列は "0940087537"です。フィールドに貼り付けようとすると、すぐに「正確に10文字で、文字と数字だけでなければならない」と表示されます。しかし、それが最初にその領域から取り除かれた場合、わずか10文字しか残っていないことがわかります。

+0

正規表現を実行する前に、入力トリム: '/^[-ZA-Z0-9] {10} $の/テスト(value.trim());私は投票を下に行う方法WiktorStribiż[email protected]' –

+0

。君は?あなたは明らかに質問を読んでいませんでした。私は空白を整えようとしているだけではありません。私はそれを行う方法を知っています。私は、正規表現を実行する前に要素を自動更新したいと思っていました....トリムされた値の正規表現を実行するだけではありません。 – swg1cor14

+0

次に、要素値をトリムして更新します。その単純な。 – Bsienn

答えて

1

あなたはこのようにJavaScriptをtrim()方法を使用することができます。

function(value, element) { 
    var trimmed_value = value.trim(); 
    var isValid = /^[a-zA-Z0-9]{10}$/.test(trimmed_value); 
    return this.optional(element) || isValid; 
} 

trim()メソッドは、文字列の両側から空白を削除します。

注: trim()メソッドは元の文字列を変更しません。

+0

あなたはSaumyaを感謝しますが、あなたが言ったように....トリム方法は元の文字列を変更しません。私は、検証が実行される前に元の文字列を更新したい。 – swg1cor14

-1

最初に値を切り捨て、要素を更新します。次に、同じ値をテストします。

function(value, element) { 
    var trimmed_value = value.trim(); 
    $(element).val(trimmed_value); 
    var isValid = /^[a-zA-Z0-9]{10}$/.test(trimmed_value); 
    return this.optional(element) || isValid; 
} 
+0

ペーストされる前にデータにアクセスすることもできます。イベントからクリップボードAPIを使用する。 http://stackoverflow.com/questions/11605415/jquery-bind-to-paste-event-how-to-get-the-content-of-the-paste –

+0

私はダウンしていますペーストイベントをバインドすることができますか?何年も前からこれをやっていて、それを聞いたことがない。私はそれがdownvoteに値するとは思わない。 – swg1cor14

+0

WHAT?私はあなたにdownvoteしなかった....裁判官にすばやい? –

関連する問題