1

私のフォームにはユーザーの国を尋ねるリスト ボックスがありますが、ボックスにユーザーの国が表示されていない場合にのみ、AJAX 呼び出しを介してリスト ボックスにデータを入力したいと考えています。最初は、リスト ボックスには国が 1 つだけ含まれています。この国は、サーバーでの ip-to-country ルックアップから返されます。

リスト ボックスの既定のアクションは、イベント アクションの前に発生するようです。ユーザーがリストボックスをクリックすると、ボックスが開く前にサーバーから取り出された国がボックスに事前に入力されるように、最初にアクションを実行したいと思います。

提案をありがとう。

$().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>

4

3 に答える 3

1

これはあなたがちょうど次のようなものを持っていた方がはるかに良いでしょう:

郡:スペインの変更

[変更]をクリックしたら、国名をすべての国のドロップダウンボックスに置き換えます。

于 2009-07-24T12:52:15.683 に答える
1

この線

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

ボックスをクリックするまでAjax呼び出しを延期しているのは何ですか。単純に変更してみてください

$(function(){

または、その行とその閉じ中括弧を削除するだけです。

于 2009-07-24T12:48:46.057 に答える
1

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

1 つのオプションは、IP 国を示すラベルを使用することです。ユーザーがそれを変更したい場合は、ラベルの横にあるボタンをクリックして、選択を作成および入力し、ラベルを置き換えます。

于 2009-07-24T12:43:25.557 に答える