2016-06-23 10 views
0

私はjQueryで私のサイトの「私たちにあなたに配信する」チェックを作成しました。jQuery/Javascript:可能な場合の非常に大きなリストに対してユーザーのテキスト入力をチェックする効率的な方法

ポストコードは配列に格納され、ユーザー入力はフォームが送信されるときに配列に対してチェックされます。

チェックする10,000のポストコード - 非常に大きなjsファイルを作成します。

これは問題なく動作するようですが、これを実行する最善の方法ではないと思います。

私はこの例を見つけましたが、これはまた、JSファイル内のすべての値が含まれます。あなたはおそらく、現在の郵便番号が利用可能な場合は、バックエンドにAJAXを送信し、DBにチェックする必要があり

Jquery Validator - check input against a list of accepted values

// post code check 
    jQuery(function($) { 

     // if user presses enter 
     if ($('.home').length) { 

     $('#postcode').keypress(function(e) { 

      if (e.which == 13) { 
      e.preventDefault(); 

      $('#submit').click(); 
      }; 
     }); 


     $("#submit").click(function(e) { 
     e.preventDefault(); 


     var trim = $("#postcode").val(); 
     var val = trim.replace(/ /g, ''); 
     var upper = val.toUpperCase(); 
     var test = ["hello"] 
     var arr = ["postcode1", "postcode2", "...postcode10,000"]; 
     if ($.inArray(upper, arr) !== -1) { 
     alert('We Deliver To You!'); 
     } else { 
     alert('Sorry we are not in your area yet'); 
     }; 
    }); 


    }; 
}); 
+0

10000 postcodesは大きなファイルです。私はサーバ側でそれを行い、結果をフェッチします。 –

答えて

0

を出荷まで。だから、必要があります。リクエスト

  • テーブルをキャッチする

    • バックエンドのスクリプトは、すべての可能な郵便番号やフラグをデシベル(利用可能かどうか)
    • 送信AJAXリクエストのためのSQLテーブル

  • バックエンドのスクリプトにあります郵便番号(例)AJAXを送信するために

    CREATE TABLE `postcodes` (
        `code` INT NOT NULL AUTO_INCREMENT, 
        `status` ENUM('NORMAL','DISABLED') NULL DEFAULT 'NORMAL', 
        `created_at` INT NULL, 
        `updated_at` INT NULL, 
        PRIMARY KEY (`code`)); 
    

    シンプルjQuerycode:

    $.ajax({ 
        method: "POST", 
        url: "some.php", 
        data: { postCode:"some code"} 
    }) 
        .done(function(html) { 
        alert("$.ajax done"); 
        console.log(html) 
        }); 
    
    関連する問題