jquery检查所有隐藏元素的值是否相似并返回布尔值

时间:2012-02-17 07:17:00

标签: jquery

如何检查一组隐藏字段的值,如果它们的值有不同之处,我将返回false。但空值和“假”应视为平等。只有3个可能的值,空,True和False,但我想将空视为False。

我想要像

这样的东西
var isTrue = true;

// is there a way to do this in jquery or similar to this?
var values = $("#group input:hidden").distinct().take(2);  
if(values.length == 2) {
    // only make it false if there is a true in the values.
    if(values[0] == 'True' || values[1] == 'True') {
        isTrue = false;
    }
}

输出应该像

{values[0] = '', values[1] = 'False'} = true
{values[0] = 'True', values[1] = 'False'} = false
{values[0] = '', values[1] = 'True'} = false

索引中的索引可以互换。

2 个答案:

答案 0 :(得分:1)

所以......基本上你想知道你所有的隐藏输入中是否有不止一个不同的字符串值(将“”和“False”视为相同)?

这样的东西?

var prevVal = null;
var result = true;
$('#group input:hidden').each(function() {
    if(prevVal === null) {
        prevVal = $(this).val();
    } else if((prevVal === "True" && $(this).val() !== "True") || (prevVal === "" && ($(this).val() !== "" || $(this).val !== "False")) || (prevVal === "False" && ($(this).val() !== "" || $(this).val !== "False"))) {
        result = false;
    }
});

答案 1 :(得分:1)

尝试在代码中添加以下jQuery扩展。

(function( $ ){

    $.fn.haveSameValue = function() {

        var val = -1;
        var same = true;

        this.each(function() {
            var thisValue = ($(this).val()=="")?"False":$(this).val();
            if(val != thisValue && val != -1) {
                same = false;
                return false;
            }
            val = thisValue;
        });

        return same;
    };

})( jQuery );

现在您应该能够调用$('your-selector-here').haveSameValue(),这将返回布尔truefalse,具体取决于所有匹配的元素('your-selector-here')是否具有相同的值或不