2014-10-01 77 views
1

那麼,製作一個表單有多於1個地址的搜索框。 使用jquery google自動完成地址搜索。 與這個jQuery插件: ubilabs.github.io/geocompletejquery幫助需要 - 只把數據放在同一格下

試圖讓細節數據,這樣不同的輸入框: ubilabs.github.io/geocomplete/examples/form.html

$(".addressinputclass").geocomplete({ 
    details: ".thisisparentclass", 
    detailsAttribute: "data-geo" 
}); 

這是HTML:

  <div class="thisisparentclass"> 
       <input type="text" name="address1" class="addressinputclass" /> 
       <input type="text" name="writepostcodehere" placeholder="Post code" data-geo="postal_code" /> 
       <input type="text" name="writecountryhere" placeholder="Country Name" data-geo="country" /> 
      </div> 

,但現在的問題,當它是多個地址輸入b牛,其他信息框獲取最後的地址信息。 你可以在這裏查看示例: http://jsfiddle.net/kosmspLm/

有幫助嗎?


更新: 感謝來自Lesha Ogonkov &圖沙·古普塔的幫助。 我得到了我的問題的解決方案。 :)

回答

1

Fiddle Demo

解決方案

$this.closest(".thisisparentclass"); 

查找與地址輸入的thisisparentclass類當前父,使detailsAttribute只填充當前選擇。

$(function() { 
    $(".addressinputclass").each(function() {//run each loop 
     var $this = $(this); //cache your selector, this refers to the current element 
     $this.geocomplete({ //attach auto-complete to the current element 
      details: $this.closest(".thisisparentclass"), //get the closest elements with class thisisparentclass 
      detailsAttribute: "data-geo" //attach data attribute 
     }); 
    }); 
}); 

問題

要附加到所有具有類thisisparentclass的元素,所以當你選擇addess它填補所有的箱子和改變先前的選擇。

$(".addressinputclass").geocomplete({ 
    details: ".thisisparentclass", //you are attaching to all the elements having this class 
    detailsAttribute: "data-geo" 
}); 
+1

哇!我嘗試使用$(this).closest(「。thisisparentclass」),但它沒有成功,沒有考慮每個循環。非常感謝代碼。 – crazymoin 2014-10-01 05:18:05

+0

@crazymoin很高興幫助:) – 2014-10-01 05:21:47

0

你可以通過選擇對插件

http://jsfiddle.net/kosmspLm/2/

$(function(){ 
    $('.addressinputclass[name="address1"]').geocomplete({ 
    details: $($(".thisisparentclass").get(0)), 
    detailsAttribute: "data-geo" 
    }); 
}); 

如果你需要一些領域的工作,我認爲你需要循環的容器,就像這樣:

$(function(){ 
    $(".thisisparentclass").each(function() { 
     var suggest, details; 

     details = $(this); 
     suggest = details.find('.addressinputclass'); 

     suggest.geocomplete({ 
     details: details, 
     detailsAttribute: "data-geo" 
     }); 
    }); 
}); 

http://jsfiddle.net/kosmspLm/3/