2016-11-02 1 views
1

직장에서 내부 응용 프로그램에 대한 일부 소스 코드를 살펴보고 이상하다고 생각되는 것을 발견했습니다.input type = 'button'대신 입력 제출을 취소하는 이유

다음은 해당 HTML 코드입니다.

<input type='submit' onclick='return doSomething()' value='Stuff Here'> 

는 그리고 이것은 그래서 JS 기능

function doSomething() { 
     //open a window with an aspx page that pulls down a pdf 

     //always returns false 
     return false; 
} 

내 질문이다. input type = 'button'을 만들고 단순히 false를 반환하지 않고 함수를 호출하는 것과는 다른 점은 무엇입니까? 그것이 완료된 방법이 양식 제출을 취소한다는 것을 이해합니다. 그러나 양식 제출을 절대로 원하지 않는 경우, 왜 양식을 제출해야합니까?

+0

2 가지 이유가있을 수 있습니다. 스크린 리더, 인덱서의 버튼에 대한 힌트가 더 있습니다. 않습니다. 또한 확실하지는 않지만 유형 제출은 기본 버튼이됩니다. 예. 엔터 키를 누르면 .. – Keith

+0

여기에 잘못 기억하고있을 수도 있지만, 과 같이 입력 버튼을 눌렀을 때 기본 동작을 취하지 않지만 '' 그렇지? – James

+0

그 코드를 작성한 사람이라면 누구나 질문 할 것입니다. 어쩌면 인라인 자바 스크립트가 여전히 사용되는 이유를 묻는 질문 일 수도 있습니다. – adeneo

답변

-1

누군가 이런 식으로 행동하는 데에는 여러 가지 이유가 있지만, 나에게 나타나는 것은 다른 페이지를 여는 것입니다. "반환 거짓;" 사용자가 더 이상 해당 탭에 없다고 말할 수 있습니다.

또한 true 및 false를 if() 문에서 사용할 수 있습니다. 심지어

if (var1 = false) { 
    var2 = true; 
    } 

또는 :

if(var1 = false) { 
    functionThatHappensWhenvar1EqualsTrue(); 
    } 

그래서, "사실"과 "거짓은"단지있는 그들에게 "true"와 "false"임에도 불구하고, 누군가는 그래서 그들을 사용할 수 있음을 의미 값. "거짓"은 참을 의미 할 수 있으며 "참"은 거짓을 의미 할 수 있습니다.

표시 한 코드가 입력 제출을 취소하지 않고 값을 반환하고 있습니다. 입력은 .pdf 문서를 통해 열립니다. 첫째

+0

귀하의 설명이 완전히 정확하지 않거나 제 질문에 해당한다고 생각하지 않습니다. 필자는 입력 유형이 'submit'이고 onclick을 통해 호출 된 함수에서 false 값을 반환하면 양식이 제출되지 않습니다. 그것이 틀렸다면, 나는 사전에 사과한다. – Robocrypt

+0

type = ""은 입력 유형을 정의합니다. 사용자가 입력을 제출하면 함수가 실행됩니다. 이 함수에서 "false"가 콘솔에 반환됩니다. – Ampck

-1

, 당신이 양식을 제출하기 전에 자바 스크립트를 실행해야하는 경우, 폼에 버튼을 여러 제출 할 수 있기 때문에이 형태 "onsubmit"이벤트가 아니라 submit 버튼의 "온 클릭"이벤트에서 할

양식 제출을 원하지 않는 경우 제출 단추를 사용할 필요가 없습니다.

당신은 여전히 ​​예를 들어

제출 "암시"으로 양식 자체를 방지해야합니다

<form> 
    <input type="text" name="name"> 
    <input type="submit" value="Submit"> 

</form> 

때리기가 제출 버튼을 활성화 텍스트 필드에 때 입력, 당신은 말할 수있는 그것은 함수를 실행합니다. 이 같은이있는 경우

그러나 (제출 버튼의 누락주의) :

<form> 
    <input type="text" name="name"> 
</form> 

또는

<form> 
    <input type="text" name="name"> 
    <input type="button" value="Submit"> 
</form> 

그런 다음 텍스트 필드에 포커스가를 제출 반면 입력 타격 형태. 이를 막으려면 다음과 같은 코드가 필요합니다.

<form onsubmit="return false;"> 
    <input type="text" name="name"> 
    <input type="button" value="Submit"> 
</form> 
관련 문제