检查输入是否未更改

时间:2012-08-31 19:16:10

标签: javascript jquery callback thumbnails

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

我正在使用<input type='file' />,我想警告用户他的行为没有任何变化。

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

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

我缺少什么?

Prev Solutuib:

好吧,我找到了解决方法,真正的问题是我给用户一个选项来隐藏缩略图,如果他想要,再打开......

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

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

3 个答案:

答案 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
    }
 });