我的表单以div元素中的一个select开头。如果用户想要添加另一年,他们会点击“添加另一年”,复制下面的div元素并克隆它。
<div class="inputfield" id="modelyeardiv" class="modelyeardiv">
<select name="frmyears[]" tabindex="3">
<option value="0000">-- SELECT A YEAR --</option>
<option value="2014">2014</option>
<option value="2013">2013</option>
<option value="2012">2012</option>
</select>
<a href="#" class="addmodelyear">Add Another Year</a>
</div>
点击“添加另一年”可以让我克隆它,以便用户可以选择多年。
$(document.body).on('click', '.addmodelyear', function(e) {
e.preventDefault();
$('#modelyeardiv').after($('#modelyeardiv').clone());
return false;
});
现在,当我的表单提交时,我想检查是否只有一个frmyears []存在。如果有,我想确保选项值选择不是0000.这将强制用户选择至少一年。
我应该怎么做?我想过在上面的jquery代码中创建一个跟踪器。因此,每次点击“添加另一年”时,我会将其增加1。提交后,我的jquery代码将检查此跟踪器。如果为1,则查看该值是否为0000,如果是,则提示用户。
有效吗?还有另一种方法可以实现这个目标吗?
作为旁注 - 客户希望像这样多次下拉。他不想要多个=“多个”列表。
答案 0 :(得分:1)
CSS / jQuery选择器“:selected:not([value = 0000])”应该可以解决问题:
if($("#modelyeardiv :selected:not([value=0000])").length == 0) {
// User has not selected a year
}
答案 1 :(得分:1)
表单中的<select>
元素是否会被提交?如果是这样,我认为只需检查名称为frmyears[]
的只有一个,如果只有一个,那么在提交表单时检查所选值会更简单。像
$(document).on("submit", "form", function(e) {
var selects = $(this).find("select[name='frmyears[]']");
if (selects.length === 1 && selects.val() === "0000") {
// stop form submission
e.preventDefault();
// do something else
}
});
答案 2 :(得分:0)
你的意思是他们只能从每个选择框中选择一个,但可以有多个选择框吗?
如果是这样,只需克隆具有相同属性名称的选择框,然后将在数组中提交值,即request.getParameterValues(“frmyears”)将返回选定年份的数组
<div class="inputfield" id="modelyeardiv" class="modelyeardiv">
<select name="frmyears" tabindex="3" multiple>
<option value="0000">-- SELECT A YEAR --</option>
<option value="2014">2014</option>
<option value="2013">2013</option>
<option value="2012">2012</option>
</select>
</div>
答案 3 :(得分:0)
认为我正在推翻这个问题。
if($('select[name="frmyears[]"]').length === 1) {
alert('only one year -- check if its 0000');
}