Javascript 检查输入是否未更改

Javascript 检查输入是否未更改,javascript,jquery,callback,thumbnails,Javascript,Jquery,Callback,Thumbnails,可以使用change()事件检查输入是否未更改 我正在使用,我想警告用户,他自己的操作没有做任何更改 现在,我刚刚做了一个正常的change()事件: // fire the thumbnail (img preview) $("#file-input").on("change", function () { readURL(this); // create the thumbnail }); 我错过了什么 上一个解决方案b: 嗯,我找到了一个解决办法,真正的问题是我给用户一个选项来

可以使用
change()
事件检查输入是否未更改

我正在使用
,我想警告用户,他自己的操作没有做任何更改

现在,我刚刚做了一个正常的
change()
事件:

 // fire the thumbnail (img preview)
$("#file-input").on("change", function () {
    readURL(this); // create the thumbnail
});
我错过了什么

上一个解决方案b:

嗯,我找到了一个解决办法,真正的问题是我给用户一个选项来隐藏缩略图,如果他愿意,再打开一次

但缩略图只会在用户选择图像时打开,这就是问题所在,因为更改事件触发此选项打开,因此,如果没有更改,则不会打开缩略图


因此,当我隐藏缩略图时,我将
输入文件更改为一个新文件,使更改事件始终启动。

使用变量存储输入的最后一个值,并与更改事件上的当前值进行比较,如果它们相同,则未进行任何更改:

var last_value = $("#file-input").val();

$("#file-input").on("change", function () {
    if (this.value === last_value) alert('no change');
    last_value=this.value;
});
编辑:或者您总是可以用另一个标记替换输入标记,如下所示:

var $c  = $("#container");
var $f1 = $("#container .f1");

function FChange() {
    alert("f1 changed");

    $(this).remove();
    $("<input type='file' class='f1' />").change(FChange).appendTo($c);
}

$f1.change(FChange);
var$c=$(“#容器”);
var$f1=$(“#container.f1”);
函数FChange(){
警报(“f1更改”);
$(this.remove();
$(“”).change(FChange).appendTo($c);
}
$f1.变更(FChange);

使用变量存储输入的最后一个值,并与更改事件的当前值进行比较,如果它们相同,则未进行任何更改:

var last_value = $("#file-input").val();

$("#file-input").on("change", function () {
    if (this.value === last_value) alert('no change');
    last_value=this.value;
});
编辑:或者您总是可以用另一个标记替换输入标记,如下所示:

var $c  = $("#container");
var $f1 = $("#container .f1");

function FChange() {
    alert("f1 changed");

    $(this).remove();
    $("<input type='file' class='f1' />").change(FChange).appendTo($c);
}

$f1.change(FChange);
var$c=$(“#容器”);
var$f1=$(“#container.f1”);
函数FChange(){
警报(“f1更改”);
$(this.remove();
$(“”).change(FChange).appendTo($c);
}
$f1.变更(FChange);

$(“#文件输入”)。关于(“更改”,函数(){
if($(this.val()!=$(this.data('url')){
//价值观发生了变化
$(this.data('url',$(this.val())
}
否则{
返回false;
}
});

$(“#文件输入”)。关于(“更改”,函数(){
if($(this.val()!=$(this.data('url')){
//价值观发生了变化
$(this.data('url',$(this.val())
}
否则{
返回false;
}
});


但是如果没有更改,更改事件不会触发吗?我可能只是误读了这个问题……但我喜欢你的答案。我没有测试它,但你可能是对的!无论如何,这是我能想到的最好的方法了?我测试过,你是对的,再次选择同一个文件不会触发更改事件。是的,当然,如果没有changes是mede,更改事件不会触发,我无法验证更改中的任何内容。似乎找不到解决方法,我能想到的最好方法是绑定到按钮上的单击功能,如果在某个时间段内没有注册更改事件,它可能没有更改!但是如果没有更改,更改事件不会触发吗ed?我可能只是误读了这个问题…但我喜欢你的答案没有测试过,但你可能是对的!不管怎样,这是我能想到的最好的办法?我测试过,你是对的,再次选择同一个文件不会触发更改事件。是的,当然,如果没有更改,更改事件不会触发,我无法验证更改中的任何内容。似乎找不到解决方法,我能想到的最好方法是绑定到按钮上的单击功能,如果在某个时间段内没有注册任何更改事件,它可能没有更改。
文件输入的值是伪造的路径。您的文件输入有默认值吗?如何?@未定义-但它有获取文件名,这样就可以进行比较,只是不能与更改事件进行比较,当然也不能与路径进行比较,因为这只是“fakepath”等等@adeneo是的,它得到了文件名,问题是一个文件输入怎么会有一个默认值?当然他想在提交事件中检查
文件输入
,所以如果文件输入的值为空,他可以提醒一些事情。我想FF会生成一个url文件,使他的预览总是不同的,所以更改工作得很完美。问题在于chro我,他只是不更改任何内容,也不触发我的
change
event如果确实有更改,则会触发更改事件,如果选择了同一个文件,则不会触发。文件输入的值是伪造的路径。您的文件输入有默认值吗?如何?@未定义-但它会获取文件名,以便进行比较,just不能用于更改事件,当然也不能用于路径,因为这将只是“fakepath”等等@adeneo是的,它得到了文件名,问题是一个文件输入怎么会有一个默认值?当然他想在提交事件中检查
文件输入
,所以如果文件输入的值为空,他可以提醒一些事情。我想FF会生成一个url文件,使他的预览总是不同的,所以更改工作得很完美。问题在于chro我,他只是不更改任何内容,也不触发我的
change
event如果确实有更改,则触发更改事件。如果选择了相同的文件,则不会触发更改事件。