2011-02-23 2 views
1

여러 제출 버튼이있는 양식이 있습니다. 마지막 버튼이 HTML5 spec'ed first 버튼이 아닌 submit을 처리하기를 원합니다.입력시 제출 버튼이 실행되도록 설정하려면 어떻게해야합니까?

이 시점에서 html을 변경할 수 없으며 JS가 필요하다는 것이 확실합니다. 그러나 내가 한 번 슛을 주었을 때 나는 디폴트 동작을 막고 다른 버튼을 발사하려고하는 불쾌한 루프 나 죽은 코드에 빠져 들었다.

이전에이 작업을 수행 한 사람이 있습니까? 필요한 경우 jQuery가 페이지에 있습니다. 당신이 양식을 제출하지 않는 대신 때

덕분에, 데니스

답변

3

당신은 jQuery를 :

언급하기 때문에 만약 당신이 사용자가

$(function() { 
    $('body').keypress(function(e) { 
     if (e.which == 13) { 
      e.preventDefault(); 
      $('#myForm').submit(); 
     } 
    }); 
}); 

그러나 다음, Enter 키를 누를 때 따라 다른 행동/양식이있는 경우, 귀하의 양식을 제출하면된다하고자하는 모든 버튼을 클릭하고 Enter 키를 눌러 마지막 버튼의 클릭 이벤트를 발생 시키려면 다음을 입력하십시오.

$(function() { 
    $('body').keypress(function(e) { 
     if (e.which == 13) { 
      e.preventDefault(); 
      $('input[type="submit"]:last').click(); 
     } 
    }); 
}); 
+0

두 번째 예제는 내가 한 것입니다! 나는 smae를 가지고 있었지만 대신에 .submit() & .keypress()를 해고했다. 고맙습니다 제쳐두고 : 나는 일반적으로 window.event.keyCode를 사용합니다. 어떤 차이가 있습니까? –

+0

jQuery의'e.which'는 누른 브라우저에서 작동하는 keyCode를 반환합니다. – Nimrod

1

당신은 buttoninput 요소의 type 속성을 변경해야합니다. 그 라인을 따라

$('.submit-button').click(function() { 
    $('#secret-value-field').val($(this).val()); 
    $(this).parents('form').submit(); 
}); 

또는 뭔가 :

<input type="button" name="mybutton" class="submit-button" value="I wont submit!" /> 

jQuery 코드 (난 당신이 정말 HTML을 변경할 수 없다고 알고 있지만, 이것은 가장 좋은 방법 입니다).

+0

그러나 다시 제출해야합니다. 서로 다른 이름을 가진 단절된 페이지 포크. 만약 다른 버튼을 타입 버튼으로 만들면 그들은 작동하지 않을 것입니다. ... –

+0

그러면 버튼으로 모두 변경 한 다음 클릭 핸들러를 추가하여 폼을 제출하고 서버로 전환하기 위해 숨겨진 입력 필드 값을 변경합니다 에 근거. 필요한 것처럼 들리면 내 대답을 코드로 편집 할 수 있습니다. –

+0

제 경우에는 이것이 도움이되지 않습니다 ... 입력 키는 여전히 버튼을 트리거합니다 (폼을 제출하는 대신 버튼의 일을 수행하더라도). – Nathan

관련 문제