2011-01-25 28 views
0

同じ値(言語のリスト)を含むページのフォームに2つのDropDownListsがあります。私は、ユーザーが各ドロップダウンで同じ値を選択しないようにしたい。ASP.NET MVC - DropDownList検証問題

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

それは明らかに正常に動作していませんが。コードを投稿できますか?フォームが検証されなかった場合、どのように提出をキャンセルしますか? – Oded

+1

どのように 'CheckLanguageDDL'関数を呼び出していますか? – Oded

+0

謝罪 - コピー/ペースト中にいくつかのコードを紛失しました。 –

答えて

1

関数はフォームが

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();" 
+0

これは動作します - ありがとう。それは私が今までに得た問題に対する最も速い解決策の1つです! –

+0

@ジミーC - 喜んで助けた:) – Oded