2011-08-11 10 views
0

アロハ!バリデータのリモートメソッド、JSON配列との値の一致

郵便番号の入力に対して基本的な検証を実行し、入力された値をチェックしてキーレスJSON配列に存在するかどうかを確認します。 リモート機能を追加するまで、すべてが期待通りに機能します。可能であれば、この関数が組み込まれているのでこの関数を利用したいと思いますが、私は他の検証方法にもオープンしています。 http://jsfiddle.net/sangria/xLGae/

はおそらく無関係な、しかし提出のコンソールでこのエラーを取得:

ここでは、リモートせずに、この例の作業

Uncaught Error: NOT_FOUND_ERR: DOM Exception 8 

JSON配列形式:

[94102,94117,94110,99950,...] 

をjQueryと検証:

jQuery.validator.addMethod("postalcode", function(postalcode, element) { 
    return this.optional(element) || postalcode.match(/^([0-9]{5})$/); 
}, "Please specify a valid postal/zip code"); 

$("#postal").validate({ 
    rules: { 
     zipcode: { 
      required: true, 
      postalcode: true, 
      digits: true, 
      minlength: 5, 
      maxlength: 5, 
      remote: { 
       type: 'post', 
       contentType: 'application/json; charset=utf-8', 
       url: "data/uszipsonly.json", 
       dataType: 'json', 
       async: false 
      } 
     } 
    }, 
    messages: { 
     zipcode: { remote: "Please specify a US postal code"} 
    } 
}); 

ドキュメントといくつかの他の良い点はexamplesです。それで、ここに似たスレッドが見つかりましたが、まだまだこれでやや上がっています。

啓発のためにコミュニティに感謝します。

答えて

1

私は多分あなたのリモート機能の役割誤解釈だと思うようにあなたがjquery.bassistance.deを使用している場合...

は、基本的には、リモート値のみを送信されると意図された後、真/偽を返すことができます主にルールのためにあなたは受け入れられた価値をクライアントに保存することを望まない(ここではcaptchaなどを考えてください)http://jquery.bassistance.de/validate/demo/captcha/

可能な郵便番号のリストをダウンロードしたい場合はまたは承諾しません)。以下の手順を実行することをお勧めします。

$.getJSON("data/uszipsonly.json", function(response) { 
var validZIP = response; 

jQuery.validator.addMethod("postalcode", function(postalcode, element) { 
    return this.optional(element) || (postalcode.match(/^([0-9]{5})$/) && $.inArray(postalcode, validZIP)); 
}, "Please specify a valid postal/zip code"); 

}

+0

Merci de m'avoircorrigé。確かにありがとう。 ここではjQuery.inArray()が必要でした。この場合は、入力された値をparseInt()する必要があり、-1より大きい値を返すかどうかを調べて配列内の存在を確認してください: '$ .inArray (parseInt(postalcode)、validZIP)> -1; ' 元々私は[this](http://www.opencoder.co.uk/2010/07/jquery-remote-form-validation)のようなものを実装しようとしていました。 /)、しかし.inArray()はそのトリックを行います。 –

関連する問題