2011-04-08 2 views
2

아약스 게시물을 사용하여이 양식 데이터를 게시 할 수 있지만 양식을 사용할 때 기본 동작을 재정의하는 방법을 알 수 없습니다. 게시됩니다. 나는 여전히 ASP NET MVC3에서 클라이언트 쪽 유효성 검사를 원합니다. 예를 들어이 양식에서 "제출"을 클릭하면이 양식의 모든 제출을 직접 처리해야하는 jquery 함수가있을 때 컨트롤러 작업으로 직접 이동합니다.클라이언트 측 유효성 검사를 유지하면서 기본 동작을 무시하면서 ASP NET MVC3 양식을 제출하는 방법

$('#testform').live('submit', function() { 
    $('#testform').validate(); 

    var name = $('#Name').val(); 
    var logout = '<a href="#" onClick="logOut()">logout</a>'; 
    var login_success = '<p>Logged in as: ' + name + '</p>' + logout; 

    if ($(this).valid()) { 
     $.ajax({ 
      url: '/home/loginform', 
      type: 'POST', 
      data: { name: name }, 
      success: function (data) { 
       if (data === true) { 
        $('#loginform').empty(); 
        $('#loginform').append(login_success); 
       } 
       else { 
        alert('Failed to save the user'); 
       } 
      } 
     }); 
    } 


}); 

그래서 제 질문은 다음과 같습니다 : 대신 폼이 자동으로 컨트롤러 액션에가는 (LoginForm// 홈 /) 그 결과를 반환하는 방법은 내가 할 수있는

@model BlogApp.Models.PostUser 

@using (Html.BeginForm("LoginForm", "Home", FormMethod.Post, new { id = "testform" })) 
{ 
@Html.ValidationSummary(true) 
<fieldset> 
    <div class="editor-label"> 
     @Html.LabelFor(model => model.Name) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Name, new { id = "Name" }) 
     @Html.ValidationMessageFor(model => model.Name) 
    </div> 
     <input type="submit" value="submit" /> 
</fieldset> 
} 

은 JQuery와 함수이다 양식 제출 내 jquery 함수 (그래서 페이지가 자동으로 새로 고침하지 않습니다) 제출하지만, 여전히 클라이언트 쪽 유효성 검사를 유지?

+1

을에서 false를 반환하여 제출 조치를 취소 할 수 있습니다, 어떻게했는지 당신은 그것을 처리 마침내? – MichaelS

답변

1

아마도 <input type="submit" value="submit" />이 원인 일 수 있습니다. 기본 양식 제출은 입력 유형 제출 때문에 발생합니다. 제출 버튼을 다른 HTML 태그 (예 : span)로 변경 한 다음 JQuery를 사용하여 제출 이벤트를 할당하거나 Javadoc를 사용하여 제출 처리기에서 기본 작업을 취소 할 수 있습니다 (.submit() documentation for JQuery 참조). 그렇게하는 방법).

... 우리는 이벤트 객체에 .preventDefault()를 호출하여 또는 우리의 핸들러 저도 같은 문제에 직면하고있어

관련 문제