2012-02-24 20 views
1

我有一个表单,其中包含要验证的地址,这需要调用Web服务,如果它无效,用户将被赋予一个模式JQuery UI对话框来覆盖。我该如何完成这项工作,因为弹出窗口是异步的,在用户能够选择是否避免验证规则之前验证呼叫已完成?JQuery验证与潜在的用户交互

编辑:我想我已经做出了一个设计决定,这可能是更好的关注分离方面。我考虑的越多,提出一个对话框以允许在验证阶段对数据进行基本编辑就没有多大意义。因此,验证将是同步的,并且覆盖将在数据输入过程的上下文内完成。 (仅供参考,除了覆盖之外,还有可能的选择列表可以从可能的匹配地址中进行选择,所以选择一个基本上会改变您首先验证的基础数据)。

+0

显示代码为了清晰起见,请输入 – mindandmedia 2012-02-24 20:25:34

回答

-1

你可以传递一个回调函数$ .getJSON或$就这样:

$.getJSON('ajax/test.json', {address: $('#myInput').val()}, function(data) { 
    var items = []; 

    $.each(data, function(key, val) { 
    items.push('<li id="' + key + '">' + val + '</li>'); 
    }); 

    $('<ul/>', { 
    'class': 'my-new-list', 
    html: items.join('') 
    }).appendTo('body'); 
}); 

这是从documentation

这里一点更适合您的需求

$.getJSON('validateAddress.json', {address: $('#myInput').val()}, function(data) 
{ 
    if(data.result == 'ok') 
    { 
     $('#override').dialog(); 
    } else { 
     alert('invalid address'); 
    } 
}); 
+0

$ .getJSON是异步的,如果他将逻辑移入回调函数,则他需要同步 – Har 2012-02-24 18:56:07

+0

工作,也许我不是正确理解问题 – mindandmedia 2012-02-24 18:58:56

+0

这是一个jQuery对话框,而不是一个警报,因此不阻止。 – Rich 2012-02-24 19:29:52