Javascript 在单击事件中存储默认值并用于比较

Javascript 在单击事件中存储默认值并用于比较,javascript,jquery,Javascript,Jquery,代码不是完整的,但演示了我正在尝试做什么。在我的脚本中,我有一个jQuery函数,当页面第一次加载到数组“defaultValues”中时,它存储来自所有文本区域的默认值。当执行“click”函数时,我们的想法是在“CheckTextChange”函数中使用数组“defaultValues”,并检查是否有任何项与“currentVal”不匹配。如果currentVal有另一个值,则进行了文本更改,CheckTextChange将返回true。我想知道,如何访问“defaultValues[]“i

代码不是完整的,但演示了我正在尝试做什么。在我的脚本中,我有一个jQuery函数,当页面第一次加载到数组“defaultValues”中时,它存储来自所有文本区域的默认值。当执行“click”函数时,我们的想法是在“CheckTextChange”函数中使用数组“defaultValues”,并检查是否有任何项与“currentVal”不匹配。如果currentVal有另一个值,则进行了文本更改,CheckTextChange将返回true。我想知道,如何访问“defaultValues[]“inside CheckTextChange以及如何在if语句中使用defaultValues[]来检查weather anny项与currentVal不匹配

HTML:


使用关联映射:

var defaultValues = {}; 
$(document).ready(function(){      
    $('.txt').each(function () {
        defaultValues[$(this).attr('id')] = $(this).val();            
    });     
});

    function CheckTextChange() {;
        var isChanged = false;
        $('.txt').each(function () {
            var currentVal = $(this).val();

            //Check if anny item in defaultVaules[] match currentVal
            if (currentVal != defaultValues[$(this).attr('id')]) {
                isChanged = true;
            }
        });

        return isChanged;
    }
并为字段设置一个ID:

<h3>Text1...</h3>
<textarea class="txt" id="field1">Hejsan</textarea><br/><br />

<h3>Text2...</h3>
<textarea class="txt" id="field2">Hejdå</textarea><br/><br />

<h3>Text3...</h3>
<textarea class="txt" id="field3">Hejsan</textarea><br/><br />

<input id="btnClick" type="button" value="Save" />
Text1。。。
海桑

文本2。。。 赫德å

文本3。。。 海桑


使用关联映射:

var defaultValues = {}; 
$(document).ready(function(){      
    $('.txt').each(function () {
        defaultValues[$(this).attr('id')] = $(this).val();            
    });     
});

    function CheckTextChange() {;
        var isChanged = false;
        $('.txt').each(function () {
            var currentVal = $(this).val();

            //Check if anny item in defaultVaules[] match currentVal
            if (currentVal != defaultValues[$(this).attr('id')]) {
                isChanged = true;
            }
        });

        return isChanged;
    }
并为字段设置一个ID:

<h3>Text1...</h3>
<textarea class="txt" id="field1">Hejsan</textarea><br/><br />

<h3>Text2...</h3>
<textarea class="txt" id="field2">Hejdå</textarea><br/><br />

<h3>Text3...</h3>
<textarea class="txt" id="field3">Hejsan</textarea><br/><br />

<input id="btnClick" type="button" value="Save" />
Text1。。。
海桑

文本2。。。 赫德å

文本3。。。 海桑


您必须按如下方式打破循环

function CheckTextChange() {;
   var isChanged = false;
   $('.txt').each(function (index) {
      var currentVal = $(this).val();

      //Check if anny item in defaultVaules[] match currentVal
      if (currentVal != defaultVaules[index]) {
         isChanged = true;
         return;
      }
  });

  return isChanged;
}

你必须打破循环如下

function CheckTextChange() {;
   var isChanged = false;
   $('.txt').each(function (index) {
      var currentVal = $(this).val();

      //Check if anny item in defaultVaules[] match currentVal
      if (currentVal != defaultVaules[index]) {
         isChanged = true;
         return;
      }
  });

  return isChanged;
}

您可以将默认值保存为数据属性

$(document).ready(function() {
    $(".txt").each(function() {
        $(this).attr("data-deftxt", $(this).val());
    });
});

$('#btnClick').on("click", function() {
    if (CheckTextChange()) {
        alert('TRUE');
    } else {
        alert('FALSE');
    }
})

function CheckTextChange() {;
    var isChanged = false;
    $('.txt').each(function() {
        var currentVal = $(this).val();
        if ($(this).val() !== $(this).data("deftxt")) {
            isChanged = true;
        }
    });

    return isChanged;
}

您可以将默认值保存为数据属性

$(document).ready(function() {
    $(".txt").each(function() {
        $(this).attr("data-deftxt", $(this).val());
    });
});

$('#btnClick').on("click", function() {
    if (CheckTextChange()) {
        alert('TRUE');
    } else {
        alert('FALSE');
    }
})

function CheckTextChange() {;
    var isChanged = false;
    $('.txt').each(function() {
        var currentVal = $(this).val();
        if ($(this).val() !== $(this).data("deftxt")) {
            isChanged = true;
        }
    });

    return isChanged;
}

尝试了此操作,但是$(文档)中的旧值。由于某种原因,ready函数根本不返回任何内容。不知道为什么。对我有用。是否要发布更新的代码?尝试了此操作,但$(文档)中的旧值无效。由于某些原因,ready函数根本不返回任何内容。不知道原因。对我有用。想发布你的更新代码吗?