我已经创建了一个函数来检查包含类“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;
}
})
}
答案 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函数有几个问题:
您可以将其更改为:
Workbooks.Open
答案 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>