2013-08-23 100 views
0

我在我的查看頁面上有一個窗體..只要窗體在頁面上填充,它就會填充舊值...我的意思是輸入框和複選框具有舊值。 ..然後我張貼表單通過ajax..after發佈後,如果值成功保存到數據庫我顯示消息,信息更新成功,反之亦然......所以現在的問題是,如果用戶不改變任何東西,在文本框中的表單值是相同的,然後當用戶按下保存按鈕時,我不想向他顯示信息已經更新,因爲他沒有做任何事情..我想問一下,如果可能在Java腳本中...或者我需要查詢數據庫並檢查值是否相同?和其他的事情,如果它可以是可能的按鈕,直到他在任何表單字段做一些變化仍然禁止...在執行AJAX之前檢查表單字段中的更改

我不寫整個代碼只是javascript部分

$("#submit").click(function(e){ 
    e.preventDefault(); 
    var name = $('#name').val(); 
    var email = $('#email').val(); 
    var password = $('#password-check').val(); 
    var oldpassword = $('#oldpassword').val(); 
    var timezone = $('#UserinfoTimezone').val(); 
    var alternate_email = $('#alternate_email').val(); 
    //var newsletter = $('#newsletter').val(); 

    var form_data = { 
     name: $('#name').val(), 
     email: $('#email').val(), 
     password: $('#password-check').val(), 
     oldpassword: $('#oldpassword').val(), 
     timezone: $('#UserinfoTimezone').val(), 
     alternate_email: $('#alternate_email').val(), 
    }; 
    $.ajax({ 
     type:"POST", 
     data:form_data, 
     url:"https:/localhost/settings/", 
     success : function(data) { 
      alert("successfully data saved"): 
     } 
    }); 

回答

0

您可以將舊值保存在JavaScript中,並將其與提交處理程序中的當前值進行比較。如果沒有改變,請不要POST

是的,您也可以先保存按鈕被禁用,並將onChange處理程序附加到表單字段,當這些字段的內容發生變化時啓用保存按鈕。

0

在ajax上提交複製輸入值到某個屬性,這樣你就知道上次發送的數據了。

$('#form input').each(function() { 

$(this).data('last-ajax-value', $(this).val()); 

}); 

當調用第二個ajax提交時,你可以檢查這些值是否匹配並作出一些決定。

var someValueDiffers = false; 

$('#form input').each(function() { 

if($(this).data('last-ajax-value') != $(this).val()) 
    someValueDiffers = true; 

}); 

if(someValueDiffers) 
// Form changed 
else 
// Form is the same 
+0

this.defaultValue = this.value聽起來更簡單。如果你設置了數據屬性,使用'.data(「last-ajax-value」,this.value)'而不是attr – mplungjan

+0

海事組織它更清楚地使用數據屬性,它不是關於輸入的默認值,而是關於最後發佈的值。我認爲表單會多次發佈。 –

+0

是的,但是defaultValue更有意義,因爲如果我們沒有使用ajax,我們可以在服務器上設置字段值 – mplungjan

-1

您可以在頁面加載時取消設置輸入值。

$(document).ready(function(){ 
    $("input").each(function(){ 
     $(this).val() = ''; 
    }); 
}); 
+0

這樣用戶可以輸入相同的東西,它會被保存 – mplungjan

0

在頁面加載時,您可以獲取所有輸入元素值並將其保存在單獨的全局變量中。提交表單時,請檢查您保存的舊輸入值。如果任何一個不相等,用戶已經更改了表單並且可以提交。

var init_name = ""; 
var submit_flag = false; 
$(document).ready(function() { 

var init_name = $('#name').val(); 

$("#submit").click(function(e){ 

    var name = $('#name').val(); 

    if(name == init_name) { 

     // user has not changed 
     submit_flag = false; 
    } else { 
     submit_flag = true; 
    } 
    if(submit_flag) { 
     // call the ajax 
    } 
}) 
}) 
1

您可以保存值,而你會在填充表單字段......否則,你可以使用它可以在.change被賦予值的標誌變量()每個字段和值的函數可以在提交表單時進行檢查..但我想第一個選項會更高效,因爲即使用戶編輯了字段並再次輸入相同的值,標誌也會被設置...

0

提交ajax您需要清除輸入字段值的值。

將此代碼,而不是你的成功:

... 
    success: function(data){ 
    alert("successfully data saved"): 
    $('#myformid').find('input:text, input:password, input:file, select, textarea').val(''); 
     $('#myformid').find('input:radio, input:checkbox') 
    .removeAttr('checked').removeAttr('selected'); 
    } 
0

一個簡單的方法來實現這一目標。提交按鈕不可用。如果在頁面上進行了更改,則無法使用它。

相關問題