テキストフィールドの入力を郵便番号としてキャプチャし、データベースから関連データ(降雪と風速)を取得するために使用している小さなjQuery関数があります。
関数:
$(document).ready(function(){
var zip = $('#id_zipcode');
zip.change(function() {
function updateEvnFactors(){
var selected = zip.val();
if (selected) {
$.getJSON(get_zip_factors_url, {zipcode: selected}, function(env_data, jqXHR){
$('#snow_fall').html(env_data[0].snow);
$('#wind_speed').html(env_data[0].wind);
});
}
}
updateEvnFactors();
$('#id_zipcode').keyup(updateEvnFactors);
});
});
要素#id_zipcode
はテキスト入力です。これは初歩的な方法で機能しますが、html 要素#snow_fall
と#wind_speed
は、ユーザーが別のフォーム フィールドにタブ移動するか、入力の外側のどこかをクリックしたときにのみ更新され#zip_code
ます。
ajax呼び出しから有効な値が返されるとすぐにhtml要素を更新するために何が欠けていますか(つまり、有効な郵便番号が渡されます)。
おまけの質問として、入力フィールドに 5 桁以上の数字がある場合にのみ ajax がアクティブになるように制限するにはどうすればよいですか?
どんな助けでも大歓迎です。