2017-04-20 15 views
0

住所用のフォームがあり、Geocompleteを使用してそのフォームに入力しています。私は選択肢の中に私の米国の州を持っています。オプションには州の名前としての州コードとテキストとしての価値があります。 Geocompleteトリガーからの戻り値を 'administrative_area_level_1'から適切に選択するにはどうすればよいですか?私がこれまで持って何ジオコンプリートトリガセットの状態を選択

<select name="administrative_area_level_1" class="form-control"> 
    <option value="AL">Alabama</option> 
    <option value="AK">Alaska</option> 
    <option value="AZ">Arizona</option> 
</select> 

私はgeocompleteに次のように変更されました:

// Assign a given `value` to a single `$element`. 
// If the element is an input, the value is set, otherwise it updates 
// the text content. 
setDetail: function($element, value){ 

    if (value === undefined){ 
    value = ""; 
    } else if (typeof value.toUrlValue == "function"){ 
    value = value.toUrlValue(); 
    } 
    alert(value); 
    if ($element.is(":input")) { 
     $element.val(value); 
    } else if ($element.is('select')) { 
     alert($element.attr('name') + ' ' + value); 
     $element.children('text=' + value).attr("selected", "true"); 
    } else { 
    $element.text(value); 
    } 
}, 

私は.isが( 'を選択)場合の部品を追加しました。しかし、それは入力されていない。州の名前と州コードによって州が戻ってきているが、それを捕まえる方法がわからないということは、ブロックの外側にある警告を見ることができます。

答えて

0

selectinputのタイプなので、ブロックに入っていません。

値の属性が状態の略語の場合は、administrative_area_level_1administrative_area_level_1_shortに変更するだけです。これは実際には値を設定しますが、trigger the changeでは設定しません。我々の場合には

if ($element.is(":input")) { 
     $element.val(value).trigger('change'); 
    } else { 
     $element.text(value); 
    } 

、状態の値が数値だったので、私はドロップダウンメニューでオプションをフィルタリングし、テキストが一致したかどうかを確認する必要がありました。ここには、私は、プラグインであること固定方法です。ここで私はその仕事をするために何をしたのですか:

if ($element.is(":input")) { 
     $element.val(value); 
     if ($element.is("select")) { 
      $('#' + $element.attr("id") + " option").filter(function() { 
       return $(this).text() == value; 
      }).prop('selected', true).trigger("change"); 
     } 
    } else { 
     $element.text(value); 
    } 
関連する問題