检查div值时未定义

时间:2015-10-07 10:50:22

标签: javascript jquery

在使用textareas之前,我已经完成了类似的案例。然而,与divs没有得到相同的结果。当检查“previousVal”时,我得到了未定义,很可能是因为我没有正确检查该值。因为这个isChanged总是返回True,即使没有对div进行文本更改。如何提取正确的数据以将previousval与currentVal进行比较。这个想法只是为了检查天气,并且已经对页面最后加载的div进行了文本更改。如果是,则isChange应该为true,否则为false。

HTML:

<h3>Handlartext1...</h3>
<div class="classA ClassB ClassC">Hello</div></textarea><br/><br />

<h3>Handlartext2...</h3>
<div class="classA ClassB ClassC">Bonjour</div></textarea><br/><br />

<h3>Handlartext3...</h3>
<div class="classA ClassB ClassC">Goddag</div></textarea><br/><br />

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

脚本:

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


    function CheckTextChange() {

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

            if (currentVal != previousVal) {
                isChanged = true;
                alert(previousVal + ' changed into ' + currentVal);
            }
        });

        return isChanged;
    }

2 个答案:

答案 0 :(得分:0)

根据您的代码,我相信您需要一个文本框,在提交时会显示原始文件是否有任何更改。

这是我用来执行此操作的代码,以及下面的工作JSFiddle:

<强> HTML

<h3>Handlartext1...</h3>
<div data-default="Hello" class="classA ClassB ClassC"><textarea>Hello</textarea><br/><br /></div>

<h3>Handlartext2...</h3>
<div data-default="Bonjour" class="classA ClassB ClassC"><textarea>Bonjour</textarea></div><br/><br />

<h3>Handlartext3...</h3>
<div data-default="Goddag" class="classA ClassB ClassC"><textarea>Goddag</textarea></div><br/><br />

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

<强> JQuery的

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


    function CheckTextChange() {

        //Checks if values have changed in elements containing class="txt" 
        var isChanged = false;
        $('.ClassC').each(function () {
            var previousVal = $(this).attr('data-default');
            console.log(previousVal);
            $textarea = $(this).find('textarea');
            var currentVal = $textarea.val();
            console.log(currentVal);

            if (currentVal != previousVal) {
                isChanged = true;
                alert(previousVal + ' changed into ' + currentVal);
            }
        });

        return isChanged;
    };

JSFiddle

答案 1 :(得分:-1)

您可以使用具有默认值的数据集标记div,然后您可以对其进行比较:

 <h3>Handlartext1...</h3>
 <div data-default-value="Hello" class="classA ClassB ClassC">Hello</div><br/><br />

我不知道你为什么需要</textarea>所以我将其删除了。

然后在Javascript中:

 var previousVal = $(this).dataset().defaultValue;
 var currentVal = $(this).text();