在 AngularJS 中选择 Google 地图自动完成地址时如何避免表单提交

jho*_*hon 4 google-maps angularjs

就我而言,谷歌自动完成地址搜索工作正常。但是当我单击或按 Enter 键时,表单也会提交。我尝试了该活动preventdefault,但它不起作用!

这是我的指令代码。

myApp.directive('googleplace', function() {
    return {
        require: 'ngModel',
        link: function(scope, element, attrs, model,event) {
            var options = {
                types: [],

            };
            scope.gPlace = new google.maps.places.Autocomplete(element[0], options);

            google.maps.event.addListener(scope.gPlace, 'place_changed', function() {
              var location = scope.gPlace.getPlace().geometry.location;
                //
                scope.$apply(function() {

                  scope.lat = location.lat();
                  scope.lng  = location.lng();

                  event.preventDefault();
                    //alert(scope.lat);

                });
            });
        }
    };
});
Run Code Online (Sandbox Code Playgroud)

小智 6

var input = document.getElementById('IdWhereYouAreSearchingForLocation');
google.maps.event.addDomListener(input, 'keydown', function(e) { 
    if (e.keyCode == 13) 
    { 
        e.preventDefault(); 
    }
});
Run Code Online (Sandbox Code Playgroud)

我的问题解决了。问题是我只是在写 event.preventDefault()。你必须尝试知道按下的是哪个键?如果按下 Enter 键,则 event.PreventDefault。