Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery按值选择我的麻烦输入_Javascript_Jquery_Input - Fatal编程技术网

Javascript 使用jQuery按值选择我的麻烦输入

Javascript 使用jQuery按值选择我的麻烦输入,javascript,jquery,input,Javascript,Jquery,Input,我有与此类似的HTML输入,从voucher1到voucher10: <input maxlength="20" type="text" name="voucher1" id="voucher1" title="Voucher" class="input" value=""> 我承认我不太了解你目前的重复检测功能。这与我对你想要达到的目标的理解不符。特别是,我不认为有必要对任何事情进行分类。分拣成本高,应避免 如果我的理解是正确的,那么我将使用重复检测函数构建并返回一个jQuery

我有与此类似的HTML输入,从voucher1到voucher10:

<input maxlength="20" type="text" name="voucher1" id="voucher1" title="Voucher" class="input" value="">

我承认我不太了解你目前的重复检测功能。这与我对你想要达到的目标的理解不符。特别是,我不认为有必要对任何事情进行分类。分拣成本高,应避免

如果我的理解是正确的,那么我将使用重复检测函数构建并返回一个jQuery集合,其中包含具有重复值的字段,而忽略任何重复集合中索引最低的字段

$(function($) {
    function findDuplicates($fields) {
        var duplicates = []; //empty array
        $fields.each(function (i, field_i) {
            $fields.each(function (j, field_j) {
                if (j > i && field_i.value != '' && field_i.value === field_j.value) {
                    duplicates.push(field_j);
                }
            });
        });
        return $(duplicates); //return a jQuery collection of duplicate fields
    }

    var $voucherFields = $("input[name^='voucher']").on('focusout', function () {
        var $duplicates = findDuplicates($voucherFields.removeClass('duplicate')).addClass('duplicate');
        if ($duplicates.length) {
            $("#message").text("No duplicates allowed"); //put message in the message field
        }
    });
});

注:

  • j>i
    测试确保:
    • 每个字段都不能与自身进行比较
    • 返回的集合中只包含索引较高的字段
  • 字段i.value!=''测试确保
    
    • 不比较空字段

  • 您是否已经在jquery中尝试了值选择器?()请张贴重复的检测代码。我希望解决方案会稍作修改。您不能基于类名进行选择,并使用数据属性跟踪排名吗?您似乎希望重复检测函数返回的不是重复值,而是索引(或ID或jQuery选择)需要为空的任何字段。是否希望使用一个函数将现有的jQuery集筛选为其值与给定字符串匹配的值?就像这个例子?尝试键入每个字段,然后键入与输入字段匹配的文本
    $(function($) {
        function findDuplicates($fields) {
            var duplicates = []; //empty array
            $fields.each(function (i, field_i) {
                $fields.each(function (j, field_j) {
                    if (j > i && field_i.value != '' && field_i.value === field_j.value) {
                        duplicates.push(field_j);
                    }
                });
            });
            return $(duplicates); //return a jQuery collection of duplicate fields
        }
    
        var $voucherFields = $("input[name^='voucher']").on('focusout', function () {
            var $duplicates = findDuplicates($voucherFields.removeClass('duplicate')).addClass('duplicate');
            if ($duplicates.length) {
                $("#message").text("No duplicates allowed"); //put message in the message field
            }
        });
    });