1

我在一个页面上有几个选择标签,我使用数据属性对它们进行分组,以确保可以比较具有相同数据键的标签。在提交时,我想检查这些组是否没有选择相同的选项值。所以想象这是一个深度图表,你列出了足球四分卫和跑卫,你想修改他们在深度图表上的位置。我不能让这两个四分卫在深度图上排名第一。我需要做的就是提醒用户......“嘿,你不能对这个位置有相同的值”,但我不确定如何使用 jQuery 进行比较以达到这一点。

Quarterback A
<select data-position="qb">
  <option>1</option>
  <option>2</option>
</select>

Quarterback B
<select data-position="qb">
  <option>1</option>
  <option>2</option>
</select>

Runningback A
<select data-position="rb">
  <option>1</option>
  <option>2</option>
</select>

Runningback B
<select data-position="rb">
  <option>1</option>
  <option>2</option>
</select>
4

1 回答 1

0

我刚刚使用类来识别您的组,而不是 jQuery 数据属性。

Quarterback A
<select class="qb">
  <option>1</option>
  <option>2</option>
</select>

Quarterback B
<select class="qb">
  <option>1</option>
  <option>2</option>
</select>

Runningback A
<select class="rb">
  <option>1</option>
  <option>2</option>
</select>

Runningback B
<select class="rb">
  <option>1</option>
  <option>2</option>
</select>

<button id="eval">evaluate</button>

​</p>

检查this JS fiddle,我认为它可以满足您的需求。如果您需要帮助解释代码,请告诉我,

http://jsfiddle.net/SnJP4/5/

我已经设置了一个例程来绑定到“评估”按钮的单击事件。如果您要添加更多职位,例如宽接收器等,那么只需将类的名称添加到classes数组中。这里:

$('#eval').click(function() {
    var classes = ['qb','rb'];
    $(classes).each(function(index, el){
        var list = [];
        $('.'+classes[index]).each(function() {
            //alert($(this).val());
            list.push($(this).val());
        });
        list = list.sort();
        for (var i = 0; i < list.length - 1; i++) {
            if (list[i + 1] == list[i]) {
                alert('duplicate ' + classes[index]);
                break;
            }
        }
    });
});​
于 2012-04-05T15:29:15.950 回答