입력 유형 = "제출"Vs 버튼 태그는 서로 호환됩니까?


233

input type="submit"button태그 그들은 교환 할 수있다? 또는 차이점이 있다면 언제 사용 input type="submit"하고 언제 button?

그리고 차이가 없다면 왜 같은 목적으로 두 개의 태그가 있습니까?



재미 사용하는 동안 일을 button하고 valueIE의 일부 버전의 속성은, input당신이, IE의 일부 버전은 잘 재생되지 않습니다 기대했던 보낼 것 button들.
Rubens Mariuzzo

대답은 기본적으로 input type="button"vs 와 동일합니다 button type=button: stackoverflow.com/questions/469059/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

답변:


131

http://www.w3.org/TR/html4/interact/forms.html#h-17.5

BUTTON 요소로 만든 단추는 INPUT 요소로 만든 단추와 같은 기능을하지만 더 풍부한 렌더링 가능성을 제공합니다. BUTTON 요소에는 내용이있을 수 있습니다. 예를 들어, 이미지를 포함하는 BUTTON 요소는 기능이 유사하며 유형이 "image"로 설정된 INPUT 요소와 유사 할 수 있지만 BUTTON 요소 유형은 컨텐츠를 허용합니다.

따라서 기능성 만 교환 가능합니다!

( type="submit"의 기본값은로 설정되어 button있으므로 잊지 마십시오 !)


7
IE6은 페이지의 모든 버튼 값을 제출하므로 클릭 한 버튼을 정확하게 결정하기가 어렵습니다. 설명 : vancelucas.com/blog/ie6-and-multiple-button-submit-elements
Sam

6
그냥 참고로 당신은하지 않습니다 사용하기 type="submit"위해 기본으로, 버튼 type입니다 submit.
동기화

8
그것이 W3C가 말한 것이지만 typedefault가 인 경우를 보았습니다 button. 브라우저 불일치를 피하기 위해 각 속성을 명시 적으로 선호합니다.
MatTheCat

5
참조 예에 따르면. 그러나 모든 브라우저가 참조 사양을 고수하지는 않습니다.
EKanadily

2
@chharvey, 전자는 자식 노드를 가질 수 없습니다. 텍스트가 아닌 내용. 나는 당신이 간결함을 제외하고 후자가 존재할 이유가 없다고 말할 수 있다고 생각합니다.
Paul Draper

71

<input type="button">단지 버튼이며, 그 자체로 아무것도하지 않습니다. <input type="submit">, 클릭하면 양식 요소 내부 양식을 제출 때.

또 다른 유용한 '특별한'버튼은 <input type="reset">양식을 지우는 것입니다.


5
질문은 <input type = "button">이 아닌 버튼 태그에 관한 것입니다
Caltor

7
질문에 관한 것입니다 <input><button>태그입니다. <input>답변 에 유용한 정보를 제공 했지만 그 <button>측면 이 부족합니다 .
Pmpr

43

<input type = "button"..> 대신 <button> 태그를 사용하십시오 . 부트 스트랩 3에서 권장되는 방식입니다.

http://getbootstrap.com/css/#buttons-tags

"크로스 브라우저 렌더링

가장 좋은 방법은 가능한 크로스 브라우저 렌더링을 보장하기 위해 가능하면 <button> 요소를 사용하는 것이 좋습니다.

무엇보다도 <input> 기반 버튼의 행 높이를 설정하여 Firefox의 다른 버튼 높이와 정확하게 일치하지 않는 Firefox 버그가 있습니다. "


4
이것을 위해 +1. button훨씬 더 명확하고 aria접근성 기능 과 함께 제공되며 훨씬 쉽게 스타일을 지정할 수 있습니다. HTML5이므로 앞으로도 생각할 수 있습니다.
user1429980

37

두 요소 모두 기능적 으로 동일한 결과를 제공하지만 * 다음을 사용하는 것이 좋습니다<button> .

  • 훨씬 더 명확하고 읽기 쉽습니다. input컨트롤이 편집 가능 하거나 사용자가 편집 할 수 있음을 제안합니다 . button그것이 제공하는 목적의 관점에서 훨씬 더 명백하다
  • CSS에서 스타일을 더 쉽게; 위에서 언급했듯이 FIrefox 및 IE에는 input[type="submit"]경우에 따라 올바르게 표시되지 않는 단점이 있습니다.
  • 예측 가능한 요청 : POST/ GET요청 의 값 을 서버에 제출할 때 IE의 동작이 매우 심각 합니다.
  • 마크 업 친화적; 버튼 안에 항목 (예 : 아이콘)을 중첩시킬 수 있습니다.
  • HTML5, 미래 지향적 사고; 개발자가 공식화되면 새로운 사양을 채택하는 것이 우리의 책임입니다. HTML5는 현재 1 년 넘게 공식적으로 운영되어 왔으며 많은 경우에 SEO강화하는 것으로 나타났습니다 .

* 기본적으로 지정된 동작이없는 것을 제외하고 .<button type="button">

요약하면을 사용하지 않는 것이 좋습니다<input type="submit" /> .


감사합니다. 나는 이것을 특히 HTML5 의미 포인트를 찾고있었습니다. 2020 년에는 순수한 기능 이상의 것을 생각해야합니다.
pierre_loic

27

<input type='submit' />자체 닫는 단일 태그이기 때문에 HTML을 지원하지 않습니다. <button>반면, 태그 쌍이기 때문에 HTML, 이미지 등을 지원합니다 <button><img src='myimage.gif' /></button>. <button>CSS 스타일링과 관련하여 더 유연합니다.

단점은 <button>이전 브라우저에서 완전히 지원하지 않는다는 것입니다. 예를 들어, IE6 / 7은 올바르게 표시되지 않습니다.

특별한 이유가 없다면,를 지키는 것이 가장 좋습니다 <input type='submit' />.


1
그 대답은 2 년 전의 것이 었습니다. 또한 대체 버튼 텍스트를 지정할 수 있습니다.<input type="submit" value="Log In" />
Jared Ng

2
@nailer 귀하는 귀하의 의견에 완벽하게 동의하지만 모든 답변은 필연적으로 현재 기술 상태를 참조 할 것입니다. 어쩌면 HTML 6은 <button>새로운 것을 선호하여 더 이상 사용되지 않을 것 입니다. 나중에 특정 시점에서 변경 될 수 있기 때문에 답변에 특정 태그를 언급해서는 안된다는 의미 입니까? 답변이 그들의 상황에 어떻게 적용되는지 결정하기 위해 독자에게 연습으로 남겨두기를 원합니다. 정보가 독자에게 가치가있는 한, 정보를 포함시키는 데 문제가있는 것은 아닙니다.
Jared Ng

1
답변을 작성할 당시 IE6 / 7은 이미 구식이었습니다. 지지하는 주장을 확인하고 더 이상 적용되지 않는다는 사실을 깨닫지 않고 게시물을 읽는 새로운 웹 개발자는 '버튼'요소를 사용하지 않는 좋은 이유가 있다고 생각합니다.
mikemaccana

2
@nailer 모든 사람이 준수하는 보편적 인 "오래된"브라우저 목록은 없습니다. 직장마다 지원되는 브라우저에 대한 요구 사항이 다릅니다. 2011 년 "지원되는 브라우저"표준에 IE6 / 7이 포함되어 있지 않다고해서 이것이 모든 경우에 해당되는 것은 아닙니다.
Jared Ng

1
나는 보편적 인 "오래된"브라우저 목록이 없다는 것을 알고 있습니다. 따라서 그러한 모든 것을 언급하지는 않습니다. "IE6 / 7은 디스플레이 버튼을 올바르게 지원하지 않습니다. 이것이 문제가 될 경우 입력을 고수하십시오"즉, 브라우저가 변경 될 것임을 알고 있습니다. 이렇게하면 IE6 대안에서 StackOverflow가 영원히 일시 중지되지 않습니다.
mikemaccana

14

나는 이것이 오래된 질문이라는 것을 알고 있지만 mozilla.org에서 이것을 발견하고 적용한다고 생각합니다.

버튼은 제출, 재설정 또는 버튼의 세 가지 유형이 될 수 있습니다. 제출 단추를 클릭하면 양식의 데이터를 요소의 action 속성으로 정의 된 웹 페이지로 보냅니다.

재설정 버튼을 클릭하면 모든 양식 위젯이 즉시 기본값으로 재설정됩니다. UX 관점에서 이것은 나쁜 습관으로 간주됩니다.

버튼을 클릭해도 아무 효과가 없습니다! 어리석게 들리지만 JavaScript로 사용자 정의 버튼을 만드는 것이 놀랍도록 유용합니다.

https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms/My_first_HTML_form#And_a_<button>_to_finish


아무것도하지 않으면 어떻게 유용합니까?
Honey

4
자바 스크립트를 통해 클릭 이벤트에 핸들러를 연결할 수 있기 때문에
fonso

예를 들어 @Honey <button type="button">는 슬라이더 / 회전 목마를 다음 슬라이드로 진행하기 위해 a 를 코딩 할 수 있습니다 .
chharvey

11

<button>보다 최신이며 <input type="submit">,보다 의미적이고, 쉽게 스타일을 지정하고 HTML을 지원할 수 있습니다.


8

다른 답변이 중대하고 질문에 대답하는 동안 사용할 때 고려해야 할 한 가지가있다 input type="submit"button. 으로 input type="submit"사용할 수 없습니다 입력에 CSS 의사 요소를하지만 당신은 할 수있는 버튼에!

이것이 button스타일링과 관련하여 입력보다 요소 를 사용하는 한 가지 이유 입니다.


3

이것이 버그인지 또는 기능인지는 모르겠지만 매우 중요한 차이 <input type="submit">가 있습니다. 요청에서 키 페어를 생성 <button type="submit">하지만 그렇지 않습니다. Chrome 및 Safari에서 테스트되었습니다.

당신은 그래서 여러는 양식에 전송 버튼 하나 클릭 한 알고 싶어 - 사용하지 않는 button, 사용 input type="submit"대신에.


내 경험상 완전히 다른 방법으로 버튼은 $ _POST [ "submit_name"]을 전달하고 입력은하지 않습니다. 크롬에서 테스트했습니다. Firefox는 $ _POST [ "submit_name"]을 항상 보냅니다.
Gall Annonim

@GallAnnonim은 문서 유형에 따라 다릅니다. 나는 확실히 입력 방식을 사용하기 때문에 = 제출과 크롬에서 작동
이반 Yarych에게

intresting ... lang "pl"&& utf-8 인코딩을 사용하여 <! DOCTYPE html>을 사용했습니다. 크롬은 58.0.3029.96
Gall Annonim

-2

에 대해 이야기하는 <input type=button>경우 양식을 자동으로 제출하지 않습니다.

<button>태그 에 대해 이야기하는 경우 최신 버전이며 모든 브라우저에서 자동으로 제출되지는 않습니다.

결론적으로, 모든 브라우저에서 클릭으로 양식을 제출하려면 <input type="submit">


14
<button type="submit">양식을 자동 제출 하는 데 사용할 수 있습니다 .
jumpnett
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.