我有一个下拉选择器,需要根据选择加载表单的其他部分。我需要确保没有选择相同的选项。这是我根据@Mike Ruhlin建议进行验证的尝试。它仍然不起作用,但我觉得我很接近。而且,我注意到我的逻辑崩溃了。通过选择一个选项,下面的所有三个选项现在都显示相同。每个选择应立即加载一个选择。
我在这里缺少什么?
这是我到目前为止所得到的:
$('.mySelector').change(function(){
var selectForm = '.' + $(this).val();
if (selectForm != '.selectOne') {
// check for dupe selections
var alreadyUsed = {};
$("select").each(function(){
var thisVal = $(this).val();
if(alreadyUsed[thisVal]){
// found a dupe
alert('already used');
}
$('div').next('.fLoad').load('formParts.html ' + $selectForm );
});
}
});
<select class="mySelector">
<option value="selectOne">Select one</option>
<option value="o1">Car details</option>
<option value="o2">Boat details</option>
<option value="o3">Train details</option>
<option value="o4">Bike details</option>
<option value="o5">Sub details</option>
</select>
<div class='fLoad'> </div>
<select class="mySelector">
<option value="selectOne">Select one</option>
<option value="o1">Car details</option>
<option value="o2">Boat details</option>
<option value="o3">Train details</option>
<option value="o4">Bike details</option>
<option value="o5">Sub details</option>
</select>
<div class='fLoad'> </div>
<select class="mySelector">
<option value="selectOne">Select one</option>
<option value="o1">Car details</option>
<option value="o2">Boat details</option>
<option value="o3">Train details</option>
<option value="o4">Bike details</option>
<option value="o5">Sub details</option>
</select>
<div class='fLoad'> </div>
答案 0 :(得分:1)
您的$('div')
选择器会在页面上选择所有 div并在其后面查找.float类。我假设您只想在当前<select>
之后立即选择div。
您必须执行$(this).next('div.fLoad').load(url)
此外,我不确定您要使用'formParts.html ' + $selectForm
加载什么,因为您将拥有一个包含文件名,空格和选择值的网址。如果要将值作为参数传递,则必须采用以下形式:formParts.html?paramName=paramValue
,但html文件不处理参数。虽然,这是另一个问题。 :)
答案 1 :(得分:1)
我不确定你在做什么:
$('div').next('.fLoad').load('formParts.html ' + $selectForm );
我认为你可以把它放回正确的位置;)
$('.mySelector').change(function(index, elem){
var filter = $(this).val();
if(filter !="selectOne"){
var size = $('.mySelector').not(this).not(function(index){
return $(this).val() != filter;
}).size();
if(size > 0){
alert("duplicates!");
}
}
});