【问题标题】:Setting values on form submission using jQuery使用 jQuery 设置表单提交的值
【发布时间】:2009-04-24 17:40:19
【问题描述】:

我正在使用以下代码通过 Google Maps API 对提供的地址进行地理编码。这个想法是对地址进行地理编码并在表单中传递纬度/经度,以便我的控制器操作可以使用它。不幸的是,这似乎不起作用,因为纬度/经度没有与表单的其余部分一起提交。我做错了什么?

$(document).ready(function() {
    $("#search_form").submit(function(event) {
        var address = $("#searchAddress").val();

        if (address != "") {
            var geocoder = new GClientGeocoder();

            geocoder.getLatLng(
                address,
                function(point) {
                    if (point) {
                        // Found address, populate hidden form fields
                        $("#searchLatitude").val(point.lat());
                        $("#searchLongitude").val(point.lng());  
                    }
                }
            );
        }
    });
});

【问题讨论】:

    标签: jquery


    【解决方案1】:

    geocoder.getLatLong() 是异步的,因此您的 Submit 不会等待您的函数(点)被调用。

    添加一个按钮(当然不是提交)并附加一个点击处理程序,如下所示:

    $("#buttonId").click(function() {
    
        var address = $("#searchAddress").val();
    
            if (address != "") {
                var geocoder = new GClientGeocoder();
    
                geocoder.getLatLng(
                    address,
                    function(point) {
                        if (point) {
                            // Found address, populate hidden form fields
                            $("#searchLatitude").val(point.lat());
                            $("#searchLongitude").val(point.lng());  
    
                            $("#search_form").submit();
    
                        }
                    }
                );
            }
    
    });
    

    【讨论】:

      【解决方案2】:

      您正在提交表单,然后设置值。这不起作用。您需要设置值,然后提交表单。

      【讨论】:

      • 这就是我害怕的。有没有标准的解决方法?
      • 其他答案中有一些很好的建议。你可以调查一下。
      【解决方案3】:

      jQuery form plug-in 将使您的生活更轻松。您可以使用 beforeSubmit 事件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-14
        • 1970-01-01
        • 2020-07-20
        • 1970-01-01
        • 1970-01-01
        • 2016-05-16
        相关资源
        最近更新 更多