验证后发送表格

时间:2012-10-10 16:34:32

标签: jquery asp.net-mvc

我对MVC很新,所以我很难解释,对不起!

我有一个表单,我想在使用post方法发送之前验证。该表单位于Index.cshtml文件中并发布到HomeController。 我的问题是当我发送表单时它没有到达正确的index()方法(HomeController中的第二个方法带有CallMeNow请求)。

有可能以这种方式解决这个问题吗?

这就是我在HomeController.cs文件中的内容:

    // GET: /Home/
    [HttpGet]
    public ViewResult Index()
    {
        return View();
    }



    // Send CallMeNow Request.
    [HttpPost]
    public ViewResult Index(string txtCallMeNow)
    {
        if (txtCallMeNow != null)
        {
            // .. doing something here.
        }
        ViewBag.EmailSent = "Thank you.";

        return View();

这是我在Index.cshtml文件中的内容:

  1. 这应验证表单并发送:

    $('#callMeNow1').submit(function (e) {
        e.preventDefault();  
        var selectedCity = $('#txtCallMeNow').val();
        if (selectedCity == 'enter phone number...')
            alert('enter phone number!');                               
        else
            document.location = $(this).prop('action');
    });
    
  2. 这是表格。它应该发布在HomeController:

    @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { id = "callMeNow1" }))
        {
            <input type="text" id="txtCallMeNow" name="txtCallMeNow" onfocus="if(this.value != '') {this.value = '';}"
                onblur="if (this.value == '') {this.value = 'enter phone number...';}" value=" enter phone number..." /><br />
            <input type="submit" class="call_me_now" value="" /> 
    
             @ViewBag.EmailSent;
        }
    
  3. 谢谢!

1 个答案:

答案 0 :(得分:0)

如果有条件,你应该将e.preventDefault();移到里面。因为它会停止提交表单。我相信你想在验证失败的情况下停止提交表单。

$('#callMeNow1').submit(function (e) {

    var selectedCity = $('#txtCallMeNow').val();
    if (selectedCity == 'enter phone number...'){
        e.preventDefault(); 
        alert('enter phone number!'); 
    }                             

});