我可能认为这一切都错了,但这就是我要做的事情:
我有一个表单,其中包含大约50个基于某些数据库信息动态生成的选择框。我无法控制文本框的ID,但我可以为每个文本框添加一个类。在提交表单之前,用户需要从选择框中选择至少一个项目,但不能超过四个。
我有点困,我总体上不熟悉jQuery,但我试图覆盖$(“形式”)。提交,这就是我正在做的事情。非常感谢任何建议或建议。
$("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;
}
});
答案 0 :(得分:1)
页面上有sportsCoachedValidation
类的实际输入数量?
如果只有一个,你计算sportsSelected
计数的内部部分将无法按预期工作......无论哪种方式,现在内部部分只会看到无论页面上有多少其他选择,第一个选择框中的第一个选择选项。考虑这样的事情:
$('.sportsCoachedValidation :selected').each(function() {
if ($(this).text() != 'N/A') {
sportsSelected++;
}
});
我所做的是稍微更改了外部部分,在整个表单中返回一组所有选定的选项。内部部分现在使用this
来引用当前选择的选项,该选项通过jquery“each”循环。您的版本在一些新标准上具有重新选择的效果,而不是使用您尝试循环的内容。
祝你好运!
答案 1 :(得分: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;
}
});
我在上一篇文章后的想法。它可能需要一些改进。希望它不是一个彻底的失败,并且可能是你想要做的。祝你好运!
答案 2 :(得分:0)
似乎大多数没问题。您可以使用
替换$('.sportsCoachedValidation').each(function() {
下的整个第一部分
var sportsSelected = $('.sportsCoachedValidation :selected').length;