使用jQuery在表单提交上设置值

时间:2009-04-24 09:17:44

标签: jquery

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

$(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());  
                    }
                }
            );
        }
    });
});

3 个答案:

答案 0 :(得分:3)

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

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

$("#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();

                    }
                }
            );
        }

});

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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