2009-07-24 3 views
1

フォームにはユーザーの国を尋ねるリストボックスがありますが、リストボックスにはAJAXコールを使用して、すでにユーザーの国を表示していません。当初、リストボックスには1つの国のみが含まれていました。国はサーバー上でIPから国へのルックアップから返されました。jqueryとボックスのクリックイベントを使用して国名のリストボックスを自動入力する

リストボックスのデフォルトアクションは、イベントアクションの前に発生しているようです。ユーザーがリストボックスをクリックすると、ボックスが開かれる前にサーバーから引き出された国がボックスにあらかじめ入力されるように、アクションが最初に発生するようにしたいと思います。

ありがとうございます。

$().ready(function() { 
    $('select#selCountry').one('click', function() { 
    var selCountry = $('select#selCountry'); 
    var selected = $(selCountry).val(); 
    selCountry.html('<option value="">Loading...</option>'); 
    $.getJSON('/AjaxHelpers/CountryList', function(data) { 
     if (data.length) { 
     var options = ''; 
     for (var i = 0; i < data.length; i++) { 
      var key = data[i].Key; 
      var val = data[i].Value; 
      options += '<option value="' + key + '"'; 
      if (key == selected) { 
      options += ' selected="selected"'; 
      } 
      options += '>' + val + '</option>'; 
     } 
     selCountry.html(options); 
     } 
     else { 
     selCountry.html('<option value="">Failed.</option>'); 
     } 
    }); 
    }); 
}); 

HTML:

<div> 
    <select id="selCountry" name="CountryCode"><option value="GB">United Kingdom</option> 

+0

"デフォルトアクション"とは何ですか?このコードではどういうことが起こるのですか?起こりたくないのですか? – mkoryak

答えて

1

あなたは選択のクリックイベントと喜びのクロスブラウザを持ちません。変更イベントのみがすべてサポートされているため、再考する必要があります。

ip国を示すラベルを使用し、ユーザーがラベルを変更したい場合は、ラベルの隣のボタンをクリックして&を作成し、ラベルを置き換えます。

1

ライン

$('select#selCountry').one('click', function() { 

あなたはボックスをクリックするまで、Ajax呼び出しを延期れるものです。

$(function(){ 

に変更するか、単にその行とその閉じ括弧を削除してみてください。

1

これは、はるかに良いあなただけのようなものだっただろう:

郡:スペインchange

彼らは変更をクリックすると、すべての国のドロップダウンボックスで国名を交換します。

+0

errrは私が言ったことではありません! – redsquare

+0

涼しいアイデア、誰かが例のコードを投稿する必要があります! – JasonDavis

関連する問題