3

我的单页上有一些表格,我通过这种方法提交它们:

$(function() {  
    $(".button").click(function() {  

var upform = $(this).closest('.upform'); 

    var txt = $(this).prev(".tekst").val();  

    var dataString = 'tekst='+ txtr;

    $.ajax({  
          type: "POST",  
          url: "http://url-to-submit.com/upload/baza",  
          data: dataString,  
          success: function() {  

            upform.html("<div class='message'></div>");  

            $('.message').html("<h2>FORM SUBMITTED</h2>")  
            .append("<p>THANKS!!</p>")  
            .hide()  
            .fadeIn(1500, function() {  
            $('.message').append("<img src='http://my-images.com/i/check.png' />");  
            });  


          }  
        });  
    return false; 

    });  
  });  

如您所见,提交表单后,显示的是消息 div 而不是提交的表单。

它完美地工作,当我只提交一个表单时 - 然后它会更改为我的消息 div,但是当我提交第二个,下一个和下一个时 - 每次我所有已经提交的表单的消息都会刷新。看起来很糟糕。我只想对实际提交的表单进行操作。如何解决?

4

4 回答 4

4

好吧,您正在.message使用 . 设置每个 div的消息$('.message').html()。试试这个:

upform.find('.message').html(...)
于 2012-05-30T07:45:52.870 回答
2

很难说不看你的 HTML 看起来如何,但我猜是这一点,

$('.message')

应该是这样的,

$('.message', upForm).
于 2012-05-30T07:47:55.407 回答
2

首先,您必须找出消息 div ( upform.find('.message') ),然后向其中添加任何 html。我认为你的代码应该是

$(function() {  
    $(".button").click(function() {  

var upform = $(this).closest('.upform'); 

    var txt = $(this).prev(".tekst").val();  

    var dataString = 'tekst='+ txtr;

    $.ajax({  
          type: "POST",  
          url: "http://url-to-submit.com/upload/baza",  
          data: dataString,  
          success: function() {  

            upform.html("<div class='message'></div>");  

            upform.find('.message').html("<h2>FORM SUBMITTED</h2>")  
            .append("<p>THANKS!!</p>")  
            .hide()  
            .fadeIn(1500, function() {  
            upform.find('.message').append("<img src='http://my-images.com/i/check.png' />");  
            });  


          }  
        });  
    return false; 

    });  
  });  
于 2012-05-30T07:51:15.397 回答
2

另一种无需在当前代码中进行更多编辑的方法只需添加几行即可。

var msgbox = $("<div class='message'></div>");
upform.html(msgbox);
msgbox.html("<h2>FORM SUBMITTED</h2>")  
.append("<p>THANKS!!</p>")  
.hide()  
.fadeIn(1500, function() {  
  $(this).append("<img src='http://my-images.com/i/check.png' />");  
}); 
于 2012-05-30T07:59:45.507 回答