使用if语句调用函数

时间:2015-10-06 12:56:01

标签: javascript jquery

我已经创建了一个函数来检查包含类“txt”的HTML中的anny textfield-element是否已经更改了页面上次加载的值。如果anny文本已更改,则函数应在if语句中返回true,否则返回false。但是我只会变得虚假。我做错了什么?

HTML:

<h3>Handlartext1...</h3>
<textarea class="txt">Hejsan</textarea><br/><br />

<h3>Handlartext2...</h3>
<textarea class="txt">Hejsan</textarea><br/><br />

<h3>Handlartext3...</h3>
<textarea class="txt">Hejsan</textarea><br/><br />

<input id="btnClick" type="button" value="Save changes" />

脚本:

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


function CheckTextChange () {
var previousVal = $(".txt").get(0).defaultValue, currentVal = $(this).text();
//Checks if values have changed in elements containing class="txt" 
$('.txt').each(function() {
       //alert( $(this).text()); //or $(this).text();

       if (currentVal != previousVal) {          
           return true;
       } 
       else {
           return false;
       }
    }) 
}

5 个答案:

答案 0 :(得分:2)

您的代码存在许多问题。例如,当您阅读text()的{​​{1}}时,您的函数不知道$(this)是什么。如果没有真正解决您的问题,也许这会引导您朝着正确的方向前进: http://jsfiddle.net/6ymxw4mg/

this

答案 1 :(得分:1)

您可以使用JQuery change()事件来跟踪正在更改哪个文本框。你有几个具有相同的类属性。在答案中,(function(){..})()被称为IIFE。如果您希望变量不暴露在全局范围内,这非常重要。示例: var IsChanged 将获得全局,其他页面可能会更改其值

 (function(){

       var IsChanged = false;
       $('#btnClick').on("click",function() {
        if(IsChanged)
        console.log('Changed');
        else
        console.log('Not changed';)
    });

      $('.txt').change(function(){
        IsChanged = true;
      });

    })();

答案 2 :(得分:0)

您的CheckTextChange函数有几个问题:

  1. 它只会检查第一个值
  2. 没有正确的文字
  3. 您可以将其更改为:

    Workbooks.Open

    Fiddle

答案 3 :(得分:0)

如果您想知道是否有任何值发生了变化:

function CheckTextChange () {
   var rtrn = false;
   $('.txt').each(function() {     
       var previousVal = $(this)[0].defaultValue, currentVal = $(this).val();
       if (currentVal != previousVal) {          
           rtrn = true || rtrn;
       } 
   }) ;
return rtrn;    
}

答案 4 :(得分:-4)

试试这个

<h3>Handlartext1...</h3>
<textarea class="txt">Hejsan</textarea><br/><br />

<h3>Handlartext2...</h3>
<textarea class="txt">Hejsan</textarea><br/><br />

<h3>Handlartext3...</h3>
<textarea class="txt">Hejsan</textarea><br/><br />

<input id="btnClick" type="button" value="Save changes" />

<script type="text/javascript">

$(document).ready(function(e) {
var prevValue = $('.txt').val();
var newValue = '';
    $('#btnClick').on("click",function() {
  CheckTextChange();

})
$('.txt').on("blur", function() {
   newValue = $(this).val();
}) ;

function CheckTextChange ()
{
    //var previousVal = $(".txt").get(0).defaultValue, currentVal = $(this).text();
    //Checks if values have changed in elements containing class="txt" 
    if(newValue != ''){
     if (prevValue != newValue) {          
         alert('true');
     }else {
        alert('false');
     }
    }else{
     alert('no changes made');
    }
}
});
</script>