0

我的视图页面上有一个表单..每当页面上填充表单时..它都充满了旧值...我的意思是输入框和复选框有旧值...然后我通过 ajax 发布表单。 .发布后,如果值成功保存到数据库中,我将显示信息更新成功的消息,反之亦然......所以现在的问题是,如果例如用户不更改任何内容,那么文本框中的表单值是相同的当用户按下保存按钮时,我不想告诉他信息已经更新,因为他没有做任何事情..我想问一下在 java 脚本中是否可能......或者我是否应该查询数据库并检查值是否相同?另一件事是,如果有可能该按钮保持禁用状态,直到他在任何表单字段中进行一些更改...

我不是在写整个代码只是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"):
        }
    });
4

7 回答 7

1

您可以在填写表单中的字段时保存值...否则您可以使用一个标志变量,该变量可以在每个字段的 .change() 函数中赋予一个值,并且可以在提交时检查该值形式..但我想第一个选项会更有效,因为即使用户编辑字段并再次输入相同的值也会设置标志......

于 2013-08-23T09:23:11.653 回答
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
     }
 })
})
于 2013-08-23T09:22:40.920 回答
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');
    }
于 2013-08-23T09:30:40.933 回答
0

实现这一目标的一种简单方法。禁用提交按钮。如果在页面上进行了更改,则启用它。

于 2013-08-23T09:40:53.413 回答
0

您可以将旧值保存在 JavaScript 中,并将它们与提交处理程序中的当前值进行比较。如果没有任何改变,请不要POST

是的,您还可以在最初禁用保存按钮,并将onChange处理程序附加到表单字段,以便在这些字段的内容更改时启用保存按钮。

于 2013-08-23T09:13:03.680 回答
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
于 2013-08-23T09:15:52.613 回答
-1

您可以在页面加载时取消设置输入值。

$(document).ready(function(){
   $("input").each(function(){
      $(this).val() = '';
   });
});
于 2013-08-23T09:21:32.110 回答