0

ビューページにフォームがあります.フォームがページに入力されるたびに..古い値が入力されます.入力ボックスとチェックボックスに古い値があることを意味します...そして、ajaxを介してフォームを投稿しています.値がデータベースに正常に保存された場合に投稿した後、情報が正常に更新された、またはその逆のメッセージが表示されます...たとえば、ユーザーが何も変更しない場合、フォームの値がテキストボックスで同じになるという問題があります。ユーザーが保存ボタンを押したとき、彼は何もしなかったので、情報が更新されたことを彼に見せたくありません.. Javaスクリプトでそれが可能かどうか尋ねたい...またはデータベースにクエリを実行して確認する必要があります値が同じかどうか?もう1つのことは、フォームフィールドのいずれかでいくつかの変更を行うまでボタンが無効のままになる可能性がある場合...

私はコード全体を書いているのではなく、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

0

古い値を JavaScript に保存し、送信ハンドラーで現在の値と比較できます。何も変わらない場合は、しないでくださいPOST

はい、最初は保存ボタンを無効にonChangeして、フィールドの内容が変更されたときに保存ボタンを有効にするハンドラーをフォーム フィールドにアタッチすることもできます。

于 2013-08-23T09:13:03.680 に答える
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

ページの読み込み時に、すべての入力要素の値を取得し、それらを個別のグローバル変数に保持できます。フォームを送信するときは、現在の入力値と保存した古い値を確認してください。いずれかが等しくない場合は、ユーザーがフォームを変更したため、送信できます。

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

それを達成するための1つの簡単な方法。送信ボタンを無効にします。ページに変更が加えられた場合に有効にします。

于 2013-08-23T09:40:53.413 に答える
-1

ページがロードされたときに入力値の設定を解除できます。

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