在asp.net中比较多个控件和单个验证

时间:2017-01-17 11:40:18

标签: c# asp.net

我的页面中有五个下拉列表包含相同的值例如 "数字从1到10" 。我希望用户 在每个下拉列表中选择不同的值。如何验证所有五个控件以检查彼此的不同值。

比较字段Validator仅用于与控件进行比较。如何比较多个控件?

由于

2 个答案:

答案 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;

enter image description here

答案 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();
}