MVC里的Submit(提交)!


OK!最近很忙,快過年了,也N久沒來更新博客,最近在做公司的后台!然后呢!然后呢就碰到這個Submit按鈕了!這里說這個肯定沒多少水分,只不過希望新人在碰到和我同樣的問題時不在糾結,立馬有想法,我今天寫這篇也算是給自己和新人留個記好!呵呵,不過實現方法很多,醬油這個方法很土,但是實用,解決問題就行了!

來場景:這樣的,我在MVC JQuery驗證表單后,然后驗證不管是對是錯,我艹!這個Submit都給我把表單給提交到Controller了,呃對了還好點錯了我.....下來看代碼:

@using (Html.BeginForm("ProdPromotionEdit", "Product", FormMethod.Post))
{
    <table cellpadding="6" cellspacing="1" border="0" width="100%">
  ..................Table里的無用代碼省略....................
        <tr bgcolor="#fafafa">
            <td align="right">
                促銷專區:
            </td>
            <td class="special_site">
               <select name="Area" id="Area" class="search_select">
               <option value="">--請選擇--</option>
               @foreach (var item in ViewBag.Area)
               {
                   if (item.Key == "1")
                   {
                       <option value="@item.Key" selected="selected">@item.Value</option>
                   }
                   else
                   {
                       <option value="@item.Key">@item.Value</option>
                   }
               }
               </select>
            </td>
        </tr>
     ..................Table里的無用代碼省略....................
          <input type="Submit" name="Save" value="保存" id="Save" class="default_button"  onclick="check()" />
            </td>
        </tr>
    </table>
}

OK!上面就是我的View界面,然后就是JQ的驗證,腳本如下:

    function check() {
        var value = parseFloat($("#PromotionValue").val());
        if (isNaN(value) == true) {
            alert("請輸入*****");
            $("#PromotionValue").focus();
            return false;
        }
        var MarketPrice = parseFloat($("#MarketPrice").val());
        if (isNaN(MarketPrice) == true) {
            alert("請輸入*****");
            $("#MarketPrice").focus();
            return false;
        }
        var StartDate = $("#StartDate");
        if (StartDate.val() == "") {
            alert("請輸入*****");
            StartDate.focus();
            return false;
        }
        var EndDate = $("#EndDate");
        if (EndDate.val() == "") {
            alert("請輸入*****");
            EndDate.focus();
            return false;
        }
        var Total = $("#Total");
        if (Total.val() == "") {
            alert("請輸入******");
            Total.focus();
            return false;
        }
        var QuantityLimits = $("#QuantityLimits");
        if (QuantityLimits.val() == "") {
            alert("請輸入******");
            QuantityLimits.focus();
            return false;
        }
    }

一些簡單的驗證,然后呢!我偏偏寫一些錯的東西,然后執行腳本了,執行完成后,還是給提交了Product 控制器(Controller)的ProdPromotionEdit 方法(Action),然后就錯了唄!你懂的。。。然后原因就是Submit即便執行完了JQ腳本還會提交表單,它是提交了,但是我的希望是JQ腳本驗證不通過的時候,它就不提交!這才是我最終的目標!其實各位大蝦,前輩在這里可能一笑而過,因為實現的辦法太多了!什么AJAX,什么什么的,反正很多了!

但是醬油在這里想到一個很土的辦法也實現了,來共享給即將要用的新同學!當時是這么想的,input的Type="Submit"會給咱驗證了還提交,那不爽啊!不要了,在直接把Type選"Button"吧!然后在驗證完成后,在Document.Submit!嘿嘿,起初是這么想,然后在就干唄!然后View就成了下面:

@using (Html.BeginForm("ProdPromotionEdit", "Product", FormMethod.Post))
{
    <table cellpadding="6" cellspacing="1" border="0" width="100%">
  ..................Table里的無用代碼省略....................
        <tr bgcolor="#fafafa">
            <td align="right">
                促銷專區:
            </td>
            <td class="special_site">
               <select name="Area" id="Area" class="search_select">
               <option value="">--請選擇--</option>
               @foreach (var item in ViewBag.Area)
               {
                   if (item.Key == "1")
                   {
                       <option value="@item.Key" selected="selected">@item.Value</option>
                   }
                   else
                   {
                       <option value="@item.Key">@item.Value</option>
                   }
               }
               </select>
            </td>
        </tr>
     ..................Table里的無用代碼省略....................
          <input type="button" name="Save" value="保存" id="Save" class="default_button"  onclick="check()" />
            </td>
        </tr>
    </table>
}

然后在JQ腳本里在加了一句話,就實現了:JQ腳本如下:

function check() {
        var value = parseFloat($("#PromotionValue").val());
        if (isNaN(value) == true) {
            alert("請輸入*****");
            $("#PromotionValue").focus();
            return false;
        }
        var MarketPrice = parseFloat($("#MarketPrice").val());
        if (isNaN(MarketPrice) == true) {
            alert("請輸入*****");
            $("#MarketPrice").focus();
            return false;
        }
        var StartDate = $("#StartDate");
        if (StartDate.val() == "") {
            alert("請輸入*****");
            StartDate.focus();
            return false;
        }
        var EndDate = $("#EndDate");
        if (EndDate.val() == "") {
            alert("請輸入*****");
            EndDate.focus();
            return false;
        }
        var Total = $("#Total");
        if (Total.val() == "") {
            alert("請輸入******");
            Total.focus();
            return false;
        }
        var QuantityLimits = $("#QuantityLimits");
        if (QuantityLimits.val() == "") {
            alert("請輸入******");
            QuantityLimits.focus();
            return false;
        }
       $(function () { $("#Save").click(function () { $(this.form).submit() }) })
    }

然后呢!最初的目標達到了,呵呵!這個辦法很土,但是能實現最初的目標和自己的想法就是OK的! 呵呵!寫這個常識呢,就是把MVC的Submit改成。。。。。應該這么說把input 里的Submit 改成 button,然后在驗證的腳本加一個submit!然后就可以實現,這個算是移花接木不,還是乾坤大挪移! 哈哈,開玩笑了,就是這么個小小的土方法的分享,希望對新朋友有點點思路即可,多謝各位前輩的指點,非常謝謝!馬上過年,祝各位前輩,朋友新年快樂!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM