簡體   English   中英

jQuery驗證規則不起作用

[英]JQuery Validate Rule not working

固定-見下文:)

我正在使用jQuery validate插件,由於某種原因,我無法使它返回有效字段-始終返回無效字段。

http://plugins.jquery.com/project/jqueryvalidate

這就是我所擁有的

        $(function(){
            $("#address").validate({
                valid: function(val){
                    $.getJSON("http://maps.google.com/maps/geo?q="+ escape(val) +"&key=ABQIAAAAnfs7bKE82qgb3Zc2YyS-oBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxSySz_REpPq-4WZA27OwgbtyR3VcA&sensor=false&output=json&callback=?",
                    function(data, textStatus)
                    {
                        if(data.Status.code=='200')
                        {
                            return true;
                        }else{
                            return false;
                        }
                    });

                },
                errorMessage: function(val){
                    return "must geo code";
                },
                appendCompletionIcon: true
            });
        });

我可以看到針對任何特定地址找到的或未找到的GEO代碼請求都返回了,但驗證仍然失敗-如果按以下方式修改功能,則我會收到關於是有效地址還是無效地址的警報,是或否,但是驗證仍然失敗。

                    function(data, textStatus)
                    {
                        if(data.Status.code=='200')
                        {
                            alert('yes');
                            return true;
                        }else{
                            alert('no');
                            return false;
                        }
                    });

任何幫助,將不勝感激


我找到了解決此問題的方法,因為它需要兩次地理代碼調用才能完成,所以它不是很漂亮。 雖然對我來說足夠好。

var geocode = false;
function geoadd()
{
    $.getJSON("http://maps.google.com/maps/geo?q="+ $("#address").val() +"&key=ABQIAAAAnfs7bKE82qgb3Zc2YyS-oBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxSySz_REpPq-4WZA27OwgbtyR3VcA&sensor=false&output=json&callback=?",
    function(data, textStatus)
    {
        if(data.Status.code=='200')
        {
            geocode = true;
        }else{
            geocode = false;
        }
    });
}

        $(function(){
            $("#address").validate({
                valid: function(val){
                    geoadd();
                    return geocode;
                },
                errorMessage: function(val){
                    return "must not be blank";
                },
                appendCompletionIcon: true
            });
        });

不管ajax調用狀態如何,驗證都會失敗,因為從valid處理程序返回的值為null,而不是true或false。

true或false值由ajax的完整處理程序返回,這與從valid函數中返回true / false值不同。

要解決此問題,您要么必須進行同步ajax調用(我不建議這樣做,因為它在等待響應時會鎖定用戶界面),或者將您的驗證插件更改為其他一些支持使用ajax調用進行驗證的插件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM