2012-08-14 4 views
1
내 MVC보기에이

.. 내가 제출 버튼을 클릭하면자동 클릭/강제 트리거 JS 기능

//Submit file 
<% using (Html.BeginForm("MethodName","ControllerName", FormMethod.Post, new { enctype = "multipart/form-data"})) { %>   
    <input type="file" name="file" id="file"/> 
    <input type="text" id="file-name" name="Id"/> 
    <input type="submit" value="Submit" name="Submit"/> 
<% } %>  

//Save link. 
<span class="Update" onclick="js.function()">Update</span> 

, 나는 컨트롤러로 이동 방법 데이터 베이스. 끝난 후에 js 함수가 submit 후에 실행되도록 save 링크를 자동 클릭/강제로 클릭해야합니다. 어떻게 할 수 있습니까?

답변

2

I을 Ajax.BeginForm을 사용하고 OnSuccess 핸들러에서 버튼을 클릭 할 수 있습니다.

<% using (Ajax.BeginForm("MethodName","ControllerName", 
    new AjaxOptions { 
     OnSuccess ="OnSuccess", 
     OnFailure ="OnFailure" 
    }, 
    new { 
     enctype = "multipart/form-data" 
    })) { %>   
    <input type="file" name="file" id="file"/> 
    <input type="text" id="file-name" name="Id"/> 
    <input type="submit" value="Submit" name="Submit"/> 
<% } %>  

자바 스크립트 : 코드는 다음과 같은 (테스트하지만, 올바른 방향으로 당신을지도해야되지 않음)를 보일 것이다

function OnSuccess() { 
    $('.Update').trigger('click'); 
} 

편집 : 당신은 업로드 시도되지 않은 경우 파일 내 위의 대답은 당신이 원하는 것입니다. 그러나 파일을 게시하려고한다는 사실을 알았을 때 좀 더 자세히 살펴 보았습니다. html5, iframe 해킹 등을 사용하지 않고도 ajax를 사용하여 파일을 업로드 할 수는 없습니다. uploadify 또는 plupload과 같은 업 로더를 사용하면 html5, 플래시 또는 해킹을 사용하여이 문제를 해결할 수 있습니다. 그들을 설정하십시오.

binding-httppostedfilebase-using-ajax-beginform도 비슷한 질문으로 도움이 될 수 있습니다.

0

여러 가지 방법이 있습니다. 제출 버튼을 트리거로 사용하여 게시의 표준 방법이 될 수있는 기본값을 방지 할 수 있습니다. 그런 다음 jquery post/get/ajax 메소드를 대신 호출하십시오. 그 게시물의 연속에서/get/ajax가 원하는 것을 실행하십시오. $('button').trigger('click');

불행하게도 당신이 가지고있는 설명이 끝난 약간의 개방은 하드가 특정 대답을 할 수 있도록 : 당신이 마음의 IE에서 다른 뭔가가있는 경우

당신은 jQuery로 버튼을 클릭 할 수있다. 위해

0

자동 trigger 클릭 (또는 그 문제에 대한이 같은 다른 행사), 당신이 필요로 먼저 이벤트과 같이 설립 할 수 있습니다 :

// setting up the event (in case they actually click it) 
$('.Update').on('click', function() { 
     test(); 
}); 

// this will automatically call it 
$('.Update').trigger('click'); 

// whatever your function is doing 
function test() { 
    alert('here'); 
} 

jsFiddle DEMO