1

我可能做错了,但这就是我想要做的:

我有一个表单,其中包含大约 50 个根据某些数据库信息动态生成的选择框。我无法控制文本框的 ID,但我可以为每个文本框添加一个类。在提交表单之前,用户需要从选择框中选择至少一项,但不能超过四项。

我有点困,而且我对 jQuery 整体不熟悉,但我正在尝试覆盖 $("form").submit,这就是我正在做的事情。非常感谢任何意见或建议。

$("form").submit(function() {

    $('.sportsCoachedValidation').each(function() {
        if ($('.sportsCoachedValidation :selected').text() != 'N/A') {
            sportsSelected++
        }                    
    });

    if (sportsSelected >= 1 && sportsSelected <= 4) {
        return true;
    }
    else if (sportsSelected > 4) {
        alert('You can only coach up to four sports.');
        sportsSelected = 0;
        return false;
    }
    else {
        alert('Please select at least one coached sport.');
        sportsSelected = 0;
        return false;
    }
});
4

3 回答 3

1

页面上有多少类的实际输入sportsCoachedValidation

如果只有一个,那么您计算sportsSelected计数的内部部分将无法按预期工作......无论哪种方式,现在内部部分只会查看一个选定的选项选择框,无论页面上有多少其他选择。考虑这样的事情:

$('.sportsCoachedValidation :selected').each(function() {
    if ($(this).text() != 'N/A') {
        sportsSelected++;
    }                    
});

我所做的只是稍微改变了外部部分,让您在整个表单中返回一组所有选定的选项。内部现在用于this引用通过 jquery “each” 循环的当前选择的选项。您的版本具有重新选择某些新标准的效果,而不是利用您尝试循环的内容。

祝你好运!

于 2010-06-03T05:10:15.980 回答
1

好的,这是另一种可能进一步简化的方法?

$("form").submit(function() {

    // How about avoiding the "each" loop, and just let jQuery count 'em up? (Not actually tested!)
    var sportsSelected = $('.sportsCoachedValidation :selected[value!="N/A"]').length;

    if (sportsSelected >= 1 && sportsSelected <= 4) {
        return true;
    }
    else if (sportsSelected > 4) {
        alert('You can only coach up to four sports.');
        return false;
    }
    else {
        alert('Please select at least one coached sport.');
        return false;
    }
});

只是我上次发帖后的一个想法。它可能需要一些改进。希望这不是完全失败,并且对于您尝试做的事情是可能的。祝你好运!

于 2010-06-03T05:18:17.457 回答
0

似乎大部分都没问题。$('.sportsCoachedValidation').each(function() {您可以将...下的整个第一部分替换为

var sportsSelected = $('.sportsCoachedValidation :selected').length;

于 2010-06-03T03:32:35.137 回答