2010-06-10 3 views
0

텍스트 상자에서 Enter 키를 누를 때 양식 제출을 취소하려고하면 이상한 문제가 발생합니다.경고 표시시 양식 제출 취소

아래 코드를 사용하면 경고를 닫은 후에 입력을 누르면 항상 제출됩니다. 양식이 더 이상 제출하지 않는 경고 메시지를 주석으로 작성하면 원하는 결과가 나타납니다.

<input id="myTextBox" type="text" onkeydown="return myFunction(event);"> 

function SearchOnEnter(event) { 
    var key = event.charCode || event.keyCode || e.which || 0; 

    if (key == 13) { 
     alert('Test text.'); 

     return false; 
    } 
    else 
     return true; 
} 

알림을 표시 한 후 양식을 제출하지 않도록 할 방법이 있습니까? 또한 경고 상자가이 문제를 일으키는 이유는 무엇입니까?

감사

UPDATE, 이것은 IE에 문제가 될 것 같지 않습니다, 파이어 폭스와 크롬에 영향을 미친다.

답변

1

keydown 이벤트의 경우 false을 반환하고 submit 이벤트의 경우는 반환하지 않습니다. 이렇게하면 양식 제출이 변경되지 않고 계속 진행됩니다.

가장 멋진 해결책이 될 수있는 keydown 처리기에서 이벤트를 중지 할 수 있습니다. 잘 모르겠습니다. 어쩌면 누군가 제안 할 수 있습니다.

한편 다른 옵션으로 양식 submit에서 확인할 수있는 keydown 이벤트에서 "양식 제출 안함"플래그를 설정할 수 있습니다.

안된

하지만,이 라인을 따라 어딘가에 작동합니다 :

// in the `keydown` function 
    if (key == 13) { 
    alert('Test text.'); 
    this.form.do_not_submit = true; 

...... 

<form onsubmit="submit()"...> 
.... 

function submit() 
{ 
    if (this.do_not_submit == true) 
    return false; 

} 

내가 그런 요소 (this.do_not_submit)를 DOM에 속성을 할당 할 수 있는지 여부 OTOH 100 % 확실하지 않다 그러나 나는 그것이 확신 .

+0

건배. 나는 아직도 경보 상자가 사건의 행동에 차이를 만드는 이유를 모르겠다. – Magpie

+0

jQuery를 사용한다면'$ .data()'를 사용할 수 있습니다. –

0

이 시도 :이 작품

if (key == 13) { 
    alert('Test text.'); 

    // if preventDefault exists run it 
    if (event.preventDefault) { 
     event.preventDefault(); 
    } 
    // otherwise set the returnValue property of the event to false (IE) 
    event.returnValue = false; 

    return false; 
} 
+0

죄송합니다. 시도했지만 작동하지 않았습니다. – Magpie