0

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

我正在与我一起工作,<input type='file' />我想警告用户他自己的行为没有做出任何改变。

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

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

我错过了什么?

上一页解决方案:

好吧,我找到了解决方法,真正的问题是我为用户提供了隐藏缩略图的选项,如果他愿意,请再次打开...

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

所以,当我隐藏缩略图时,我会更改input file 一个新的,使更改事件始终触发。

4

3 回答 3

5

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

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

$("#file-input").on("change", function () {
    if (this.value === last_value) alert('no change');
    last_value=this.value;
});

编辑:或者您总是可以将输入标签替换为另一个标签,就像这个SO 答案建议:

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);
于 2012-08-31T19:18:05.913 回答
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;
    }

});
于 2012-08-31T19:21:02.877 回答
0
 $("#file-input").on("change", function () {
    if($(this).data('last-val')){
        // do something
    } else {
       $(this).data('last-val',$(this).val());
       //do something else
    }
 });
于 2012-08-31T19:25:11.060 回答