2014-09-05 65 views
0

我正在使用主幹提交表單。表單駐留在html頁面(主頁)中。我使用.save()骨幹模型的方法在表單提交時將數據保存在數據庫中。我用e.preventDefault();以防止提交併捕獲值。使用主幹提交表單

問題是在提交後表單保持不變,這意味着輸入字段填充了先前的值。如果我再次提交表單,則先前的值插入到數據庫中。

在提交後如何使表格與第一個狀態(空白)相似?

代碼

HTML

<form method="post" id="my_form">      
    <input type="text" id="name" size="30" required autofocus/> 
    <input type="email" id="email " size="30" required/> 
    <input type=" text " id="catagory" size="30" required/>       
    <input type="submit" value="Submit"/> 
</form> 

骨幹

var My_view = Backbone.View.extend(
{ 
    el: $("body"), 
    events: 
    { 
     "submit #my_form": "save"  
    }, 
    initialize: function() 
    { 
     _.bindAll(this,'save'); 
    }, 
    save: function(e) 
    { 
     e.preventDefault(); 
     var name = $('#name').val(); 
     var email = $('#email').val(); 
     var catagory = $('#catagory').val(); 

     var data = { 
      name : name, 
      email : email, 
      catagory : catagory 
     }; 

     var my_model = new My_model();    

     my_model.save(data, 
     { 
      success: function(model,response) 
      { 
       alert(JSON.stringify(response)); 
      }, 
      error: function(model,response) 
      { 
       alert(JSON.stringify(response));  
      } 
     }); 
    } 
}); 


var my_view = new My_view({}); 
+0

請張貼您的代碼。 – 2014-09-05 04:14:12

+0

你是否會在提交後繼續顯示相同的表單? – kinakuta 2014-09-05 04:15:36

+0

@kinakuta,是的。 – 2014-09-05 04:17:24

回答

2

如果你想要做的是明確的形式,然後在success回調至save方法只需添加一些JavaScript來做到這一點是這樣的:

my_model.save(data, 
     { 
      success: function(model,response) 
      { 
       alert(JSON.stringify(response)); 
       $('#myForm')[0].reset(); //native javascript 
      }, 
      error: function(model,response) 
      { 
       alert(JSON.stringify(response));  
      } 
}); 

記住,這將是你的用戶困惑 - 如果他們按提交,然後形式似乎只是刪除他們的反應。你最好隱藏表格:$('#myForm').hide()然後顯示一條消息,說明表單已成功提交。或者將他們重定向到提交成功頁面。