【问题标题】:Check all file inputs for content检查所有文件输入的内容
【发布时间】:2013-01-29 20:27:21
【问题描述】:

每次输入之一发生更改时,我都会尝试使用 .ruFileInput 类循环遍历所有文件输入。

如果他们都填满了,我想做点什么——在这个例子中 alert("No Empty Fields!!");

问题在于,每次文件输入更改时都会弹出消息,而不是在它们全部填充后发出警报。有什么建议吗?

$('input.ruFileInput').live('change' , function () { 
    $("input.ruFileInput").each(function() {
        if($(this).val() != ""){
            alert("No Empty Fields!!");
        }
    });
});

【问题讨论】:

  • 确保去掉live
  • 由于某种原因,我使用的原始答案已被删除。使用该答案和@gdoron 的删除直播的建议,我最终得到:$('.uploadcontrolx').on('change', 'input.ruFileInput', function () { var x = $("input.ruFileInput").filter(function(){ return $.trim(this.value) == '' }).length; if(x == 0){ alert('no empty boxes'); } });

标签: jquery


【解决方案1】:
var doesEmptyExist = $("input.ruFileInput").filter(function(){
    return this.value === "";
}).length > 0;

注意live 自 1.7 起已弃用并在 1.9 中被删除,停止使用它!

$('#containerId').on('change', 'input.ruFileInput', function(){
    var doesEmptyExist = $("input.ruFileInput").filter(function(){
        return this.value === "";
    }).length > 0;

    if (!doesEmptyExist)
        alert('no empty boxes');
});

【讨论】:

  • 有人愿意在这个和我的答案之间进行速度测试吗?我很想知道纯 jQuery 选择器是否总是更快。这应该很快。 +1 不将this 转换为 jQuery 对象只是为了像其他人一样检查值:P
【解决方案2】:

只需使用 jQuery 选择器:

if ($('input.ruFileInput[value=""]').length == 0) {
    alert("No empty Fields");
}

【讨论】:

  • 只要确保事先修剪值。
  • 如果他必须修剪这些值,那么它们实际上并不是空的,是吗?我的意思是,如果未选择文件路径,它们如何以空格结尾?
  • 我同意。在文件输入的情况下不太可能。但作为一般经验法则,这可能适用于任何输入元素。
  • 我不会投反对票,但这是错误的,你不应该使用属性选择器作为值,它不起作用。
  • 你的意思是它不起作用?值的选择器属性绝对有效。
【解决方案3】:

尝试设置一个布尔值,而不是在.each 循环中发出警报。

$('input.ruFileInput').live('change', function () {
    var isEmpty = false;
    $("input.ruFileInput").each(function () {
        if ($(this).val() != "") {
            isEmpty = true;
            break;
        }
    });
    if (!isEmpty) {
        alert("No Empty Fields!!");
    }
});

【讨论】:

    猜你喜欢
    • 2012-11-05
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多