可以使用change()
事件检查输入是否未更改?
我正在使用<input type='file' />
,我想警告用户他的行为没有任何变化。
现在,我刚刚做了一个正常的change()
事件:
// fire the thumbnail (img preview)
$("#file-input").on("change", function () {
readURL(this); // create the thumbnail
});
我缺少什么?
Prev Solutuib:
好吧,我找到了解决方法,真正的问题是我给用户一个选项来隐藏缩略图,如果他想要,再打开......
但缩略图只会在用户选择图片时打开,这就是问题,因为更改事件会触发此选项打开,因此,如果没有更改,则不会打开缩略图。
所以,当我隐藏缩略图时,我将input file
更改为新的缩略图,使更改事件始终触发。
答案 0 :(得分:5)
使用变量存储输入的最后一个值,并与change事件的当前值进行比较,如果它们相同,则不做任何更改:
var last_value = $("#file-input").val();
$("#file-input").on("change", function () {
if (this.value === last_value) alert('no change');
last_value=this.value;
});
编辑:或者您可以随时将输入标记替换为另一个,例如SO answer建议:
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);
答案 1 :(得分:1)
<input type="file" id="file-input" data-url="intial-value" />
$("#file-input").on("change", function () {
if($(this).val() != $(this).data('url'){
//value has changed
$(this).data('url', $(this).val())
}
else{
return false;
}
});
答案 2 :(得分:0)
$("#file-input").on("change", function () {
if($(this).data('last-val')){
// do something
} else {
$(this).data('last-val',$(this).val());
//do something else
}
});