我的页面中有五个下拉列表包含相同的值例如 "数字从1到10" 。我希望用户 在每个下拉列表中选择不同的值。如何验证所有五个控件以检查彼此的不同值。
比较字段Validator仅用于与控件进行比较。如何比较多个控件?
由于
答案 0 :(得分:0)
使用CustomValidator with JavaScript function进行验证。请注意,我假设您的ddl选项将Value
属性设置为0,1,2..so。 0表示“选择”选项。 Text
属性可以是任何东西。
<asp:DropDownList runat="server">
<asp:ListItem Text="Number from 1 to 3" Value="0" />
<asp:ListItem Text="1" Value="1" />
<asp:ListItem Text="2" Value="2" />
<asp:ListItem Text="3" Value="3" />
</asp:DropDownList>
如果您可以将下面的代码转换为jQuery,它将比这个简单的JS版本小得多。
var valid = false;
var ddlValues = ''; // selected values of lists
var separator = '~';
var ddlOptions;
var ddls = document.getElementsByTagName('select');
for (var i = 0; i < ddls.length; i++) {
if (ddls[i].value == '0') { // No option selected for this list.
valid = false;
break;
}
if (i == 0) { ddlOptions = ddls[i].options; }
ddlValues += ddls[i].value + separator; // "1~2~1~"
valid = true;
}
if (valid) {
for (var i = 1; i < ddlOptions.length; i++) {
var testValue = ddlOptions[i].value + separator;
var regex = new RegExp(testValue, 'g');
var replacedValues = ddlValues.replace(regex, '');
if (ddlValues.length - replacedValues.length > testValue.length) {
valid = false;
break; // We found duplicate selection
}
}
}
return valid;
答案 1 :(得分:-2)
您可以设置所有5个下拉列表ID(例如:ddl1,ddl2 ... ddl5),当选择一个控件值时,您可以将这些值与javascript或ajax进行比较。
$('#ddl1').onchange(myControlFunction);
$('#ddl2').onchange(myControlFunction);
$('#ddl3').onchange(myControlFunction);
$('#ddl4').onchange(myControlFunction);
$('#ddl5').onchange(myControlFunction);
var myControlFunction = function(){
var ddl1 = $('#ddl1').val();
var ddl2 = $('#ddl2').val();
var ddl3 = $('#ddl3').val();
var ddl4 = $('#ddl4').val();
var ddl5 = $('#ddl5').val();
if (CompareIsSame(ddl1, ddl2, ddl3, ddl4, ddl5))
alert("Same value");
e.preventDefaults();
}