需求:要做一個草稿保存功能,點擊保存時,若表單數據有改動,則用ajax提交到處理程序,無數據改動里,提示無數據更新,無須保存,不提交。
解決思路:使用jquery給表單的每一個元素加上change監聽事件,當值發生變化時,用data()方法在表單保存一個表單修改的標識
當用戶提交的時候根據表單保存的標識判斷表單的內容是否有更新,成功提交后,重置標識
對於隱藏域hidden無法觸發onchange的解決方法:在更改此隱藏域的時候,調用下它的onchange方法,使用jquery的話, 就直接加上 $("#hiddenid").change();
實現頁面只有一個表單 id 為form,有若干input,編輯器
$(document).ready(function() { //監聽表單input元素的值變化
$(":input").change(function (){ $('#form').data('changed',true); }); //如果使用到編輯器,請調用編輯器中的監聽方法
//我在項目中在一個textarea中綁定了百度的編輯器
//這里的處理是,認為只要在編輯器中有鍵盤操作就有更新,此做法不夠精確
editor.addListener('keyup',function(){ $('#form').data('changed',true); }); }); //提交前做判斷
if(!$('#form').data('changed')) { alert('公告無更新,無需保存'); return false; } //成功提交處理后重置修改標識 $('#form').data('changed',false);
在使用過程中,最重要的步驟是處理隱藏域和編輯器
總結:對於隱藏域hidden無法觸發onchange的解決方法:在更改此隱藏域的時候,調用下它的onchange方法,使用jquery的話, 就直接加上 $("#hiddenid").change();
如果給表單添加了change事件,那么hidden表單的值變化了之后主動調用change()函數即可。
來源:http://blog.sina.com.cn/s/blog_7cc04ac801012an3.html
