ajax load禁用其他链接,即使返回false也提交表单,

时间:2011-05-04 22:50:47

标签: python django jquery

我正在尝试根据验证结果加载表单的某些部分。这是我正在使用的代码 它与表格上的所有按钮相同。

$("#button").click(function(e){
      e.preventDefault();
      noPgLoad(this);
});
function noPgLoad(button){
  $.ajax({
    type: "POST",
    url: url,
    data : serialized_data,
    success: function(data,textStatus,xhr){
           $('#somediv').replaceWith(data);
           return false;
           },
    error: fail,
    dataType: "html"
 });
}

在django视图中,我检查request.is_ajax() 问题:

  1. ajax调用替换了正确的验证结果,但页面上的其他链接不起作用。
  2. 在成功调用ajax之后单击按钮时,它会提交form.i.e,不会调用ajax的jquery函数,因此提交了表单。 我的一整天都是这样,是Ajax新手。非常欢迎任何想法。

1 个答案:

答案 0 :(得分:0)

我不确定您的第一个问题,但我认为您可以使用livesee jquery docs)代替click来解决问题

$("#button").live('click', function(e){
  e.preventDefault();
  noPgLoad(this);
});

简要说明一下,当您使用click时,它仅适用于页面上的元素。我认为您的代码$('somediv').replaceWith(data)正在替换按钮。单击新按钮不会触发处理程序,因为它是在附加处理程序后添加的。

当您使用live然后添加新按钮时,点击新按钮将触发处理程序。