このコードは、APIからフォームに入力します。
$('#shipper_search').click(function(){
var searchBy = $('#shipper_search_by').val();
var searchFor = $('#shipper_search_for').val();
var warehouse = $('#warehouse').val();
$.get('index.php?p=api&r=json&c=location&m=find&d=' + searchBy + '/' + searchFor + '/shipper/' + warehouse , function(data, status){
data = $.parseJSON(data);
$('#shipper_name').val(data['body'][0]['location_name']);
$('#shipper_address1').val(data['body'][0]['address1']);
$('#shipper_address2').val(data['body'][0]['address2']);
$('#shipper_city').val(data['body'][0]['city']);
$('#shipper_state').val(data['body'][0]['state']);
$('#shipper_zip').val(data['body'][0]['zip']);
$('#shipper_country').val(data['body'][0]['country']);
$('#shipper_contact_name').val(data['body'][0]['contact_name']);
$('#shipper_contact_phone').val(data['body'][0]['phone']);
$('#shipper_contact_fax').val(data['body'][0]['fax']);
$('#shipper_contact_email').val(data['body'][0]['email']);
});
});
そのセクションでフィールドが変更されるたびに、次のコードが実行されることになっています。
$('#shipperinfo').find('input:text').change(function(){
var valid = 0;
if($('#shipper_name').val().length > 0){
valid++;
}
if($('#shipper_address1').val().length > 0){
valid++;
}
if($('#shipper_city').val().length > 0){
valid++;
}
if($('#shipper_state').val().length > 0){
valid++;
}
if($('#shipper_zip').val().length > 0){
valid++;
}
if($('#shipper_country').val().length > 0){
valid++;
}
if(valid == 6) {
$('#shipper_ok').removeClass('hide');
} else {
$('#shipper_ok').addClass('hide');
}
});
ユーザーがフィールドに情報を手動で入力すると、2番目の機能が完全に機能します。ただし、検索機能を使用してフォームに入力する場合、.change()は発生しないようです。
私はその理由について年齢を探していましたが、jQuery / JSは比較的新しい(約4日)ので、これを解決する方法がわかりません。任意の提案やアイデアをいただければ幸いです。