ASP.NET MVC - DropDownList验证问题

时间:2011-01-25 20:28:53

标签: asp.net-mvc-2 drop-down-menu validation

我在页面上的表单中有两个DropDownLists包含相同的值(语言列表)。我想确保用户不会在每个下拉列表中选择相同的值。

我尝试过使用JavaScript来确保所选的值不一样,但它运行正常,但表单仍会提交。

实现这一目标的最佳方法是什么?

以下是我的观点中的代码:

    <script type="text/javascript">

    function CheckLanguageDDL() 
    {
        var form = document.getElementById("form0");

        var sourceLangIndex = form.SourceLanguage.selectedIndex;
        var targetLangIndex = form.TargetLanguage.selectedIndex;
        var strSourceLanguage = form.SourceLanguage.options[sourceLangIndex].text;
        var strTargetLanguage = form.TargetLanguage.options[targetLangIndex].text;

        if (strSourceLanguage == strTargetLanguage) 
        {
            alert("Source Language and Target Language must be different!");
            return;

        }
    }

</script>

    <% Html.BeginForm("Index", "Translate", FormMethod.Post, new { enctype = "multipart/form-data" }); %>

    <fieldset>
    <legend>Request</legend>

    <br />
    <div class="editor-label">
        <%: Html.LabelFor(m => m.SourceLanguage) %>:
     </div>
    <div class="editor-field">
        <%: Html.DropDownList("SourceLanguage", (IEnumerable<SelectListItem>)ViewData["SourceLanguages"]) %>
        <%: Html.ValidationMessageFor(m => m.SourceLanguage) %>
    </div>

    <br />
    <div class="editor-label">
        <%: Html.LabelFor(m => m.TargetLanguage) %>:
     </div>
    <div class="editor-field">
        <%: Html.DropDownList("TargetLanguage", (IEnumerable<SelectListItem>)ViewData["TargetLanguages"]) %>
        <%: Html.ValidationMessageFor(m => m.TargetLanguage) %>
    </div>

    <input type="submit" value="Submit Request" onclick="CheckLanguageDDL();" />
    </p>
    </fieldset>

感谢。

1 个答案:

答案 0 :(得分:1)

使函数返回表单提交使用返回值

的true / false值
function CheckLanguageDDL() 
{
    var form = document.getElementById("form0");

    var sourceLangIndex = form.SourceLanguage.selectedIndex;
    var targetLangIndex = form.TargetLanguage.selectedIndex;
    var strSourceLanguage = form.SourceLanguage.options[sourceLangIndex].text;
    var strTargetLanguage = form.TargetLanguage.options[targetLangIndex].text;

    if (strSourceLanguage == strTargetLanguage) 
    {
        return false;
    }

    return true;
}

在按钮上:

onclick="return CheckLanguageDDL();"