输入时jquery加载数据(而不是单击)

时间:2009-06-23 22:19:44

标签: jquery

在我网站的一个部分,我向客户询问他们的邮政编码和国家/地区。输入这些信息后,将从其他页面加载运费,然后单击计算链接。现在,我想删除点击按钮,输入这些信息后,我希望用户看到加载图像并立即加载数据。我想知道这是否可能,是否有任何例子。

$(document).ready(function() { 
$("#link").click(function() { 
        $.ajax({
            type: "GET",
            data: { PROCESS: "UPS", WEIGHT: "<%=Session("TotalWeight")%>", POSTALCODE: $(document.getElementsByName("ShippingPostalCode")).val(), COUNTRY: $(document.getElementsByName("ShippingCountry")).val() },
            url: "content/checkout/step1/index.cs.asp", 
            success: function(output) { 
            $("#sonuc").html(output);
            $("#sonuc").css("display", "block");
            }
        }); 
    }); 
});

快速更新!我允许我的客户存储地址以备将来使用。如果他们存储了地址,他们只需点击一下即可复制并粘贴地址。这是代码:

function StoredData(){
    $.get("includes/ajaxfunctions.asp?Process=checkout1", { QUERY: $(document.getElementsByName("CUSTOMERDETAILNAME")).val() }, function(data){
        $("div.StoredData").html(data);
    });
}

$(document).ready(function() { 
    $("input[name=ShippingPostalCode]").livequery("change", function() { 
        $.ajax({
            type: "GET",
            data: { PROCESS: "UPS", WEIGHT: "<%=Session("TotalWeight")%>", POSTALCODE: $(document.getElementsByName("ShippingPostalCode")).val(), COUNTRY: $(document.getElementsByName("ShippingCountry")).val() },
            url: "content/checkout/step1/index.cs.asp", 
            success: function(output) { 
                $("#sonuc").html(output);
            }
        }); 
    }); 
});

2 个答案:

答案 0 :(得分:1)

我假设您的StoredData div包含这些输入。

通过编写$("div.StoredData").html(data),您将使用新的输入元素替换已在其上注册的事件处理程序的输入。每次执行此操作时都需要重新注册事件处理程序。

最简单的方法是使用jQuery的LiveQuery插件,如下所示:

$("input[name=ShippingPostalCode]").livequery("change", /*your function*/);

在加载时运行一次,一切都应该正常。

或者,您可以在运行$("div.StoredData").html(data)之后在AJAX回调之后重新注册处理程序。

最后,您还可以更改AJAX请求(ajaxfunctions.asp?Process=checkout1)以将数据作为JSON而不是包含数据的HTML返回,并自行更新现有元素的值。这是最快的解决方案。

答案 1 :(得分:0)

$(document.getElementsByName("ShippingPostalCode")).change(/*your function*/);