3

私はJSにかなり慣れていないので、これが機能しない理由について少し混乱しています。基本的に、ジオコンプリート jQueryプラグインを使用して、フォームに座標と住所を入力しています。次に、ユーザーが宛先を選択したら、フォームを送信したいと思います。

 <form action="search.php" method="post" id="searchForm">
        <input id="geocomplete" type="text" placeholder="Where are you going to?" size="35" />
        <input name="lat" type="hidden" value="">
        <input name="lng" type="hidden" value="">
        <input name="formatted_address" type="hidden" value="" id="address">
    </form>

これは、フォーム プラグイン (機能する) を開始するために呼び出すスクリプトと、アドレスの値がプラグインによって変更された後にフォームを送信するスクリプトです。

<script type="text/javascript">
window.onload= function () {
    if(window.addEventListener) {
        document.getElementById('address').addEventListener('change', doIt, false);
    } else if (window.attachEvent){
        document.getElementById('address').attachEvent("onchange", doIt);
    }

    function doIt(){
        document.getElementById("searchForm").submit();
    }
}

$("input").geocomplete({ details: "form" }); 


</script>

値が変更されるため、これが機能しない理由がわかりません。どうもありがとう!

4

3 に答える 3

1

jqueryを使用した別のソリューションを次に示します。これにより、自動入力されたアドレスがクリックされるか、ユーザーが矢印キーで選択して Enter キーを押すと、送信が強制されます。ジオコーディング ライブラリが非表示フィールドに入力できるようになるまでに 1.5 秒の遅延があります。この必要な遅延が'onchange="this.form.submit()"、私にとってうまくいかなかった理由です。

  /*
    submit form when user clicks or hits enter on auto suggest 
    must sleep for 2 seconds to allow the geocoding library to update the hidden fields
  */
  $(document).ready(function(){
    $('#geocomplete').change(function(){
      setTimeout(function() {
        $('#find').click()     
      }, 1500);
    });
  });
  $(document).ready(function(){
    $('#geocomplete').keydown(function(event){
      if (event.keyCode == 13) {
        setTimeout(function() {
          $('#find').click()     
        }, 1500);
        return false;
      }
    });
  });
于 2015-04-23T04:30:03.867 に答える
1
$(function(){
    $(".geocomplete")
       .geocomplete({details:"form"})
       .bind("geocode:result", function(event, result){$(".searchForm").submit();
        });
    });
于 2016-04-01T19:17:52.170 に答える