[질문] a href="#" 과 submit

Mozilla Firefox 사용에 대한 일반적인 질문과 답을 해 주는 게시판입니다. 질문을 하기 전에 FAQ를 읽어 보시는게 도움이 될 것입니다.
Post Reply
kingori
Posts: 28
Joined: 2004 10 21 16:54 08
Contact:

[질문] a href="#" 과 submit

Post by kingori »

제목란이 너무 짧아 제목짓기가 상당히 고민되네요 :)

빈번히 사용되리라 생각되는 아래의 코드

Code: Select all

<a href="#" onclick="doSomething();" >click me!</a>
가 submit 에 미치는 영향이 있을까요?

이런 의문이 들게 된 원인은 아래 코드 입니다.

Code: Select all

<html>
<head>
<script type="text/javascript">
var selectAllType = false;
    
   function selectAll( flag )
  {
    if( flag != null )
    {
	selectAllType = flag;
    } else
    {
	selectAllType = !selectAllType;
    }
    var checkBox = document.forms[0].checkBox;
    if( checkBox )
    {
       if( checkBox.length )
       {
         for( var index =0; index < checkBox.length;index++)
         {
            checkBox[ index ].checked  = selectAllType;           
         }
       } else
       {
           checkBox.checked = selectAllType;       
       }
    }
    return true;
  }
 
</script>
</head>
<body onload="alert('loaded!');">
 <form name="form1" ction="test.html" onsubmit="return selectAll(false);">
   <input type="hidden" name="submit" value="true"/>
   <table>
     <tr><td><input type="checkbox" name="checkBox" value="1"/>item1</td></tr>
     <tr><td><input type="checkbox" name="checkBox" value="2"/>item2</td></tr>
   </table>
   <input type="submit"/>
 </form>
 <a href="#" onclick="selectAll()" >selectAll</a>
 <input type="button" onclick="selectAll()" value="selectAll"/>
</body>
</html>
위 화면에서 하고자 하는 것은

1. item 앞의 selectBox 들이 위치하고, selectAll 을 누르면 전체선택/전체해제가 전환된다.
2. submit 시에는 selectBox 들을 uncheck 하여 param 으로 넘어가는 것을 막는다.

입니다. 소스에서 보듯이 처음에는 a 테그만을 사용했습니다.
이때 이것을 클릭하면 URL 이 변경됩니다. ( a 테그니까요 )

제 환경상에서 말씀드리자면

file:///d:/tmp/test.html
=> 클릭시 file:///d:/tmp/test.html#
=> submit 버튼 누를경우 uncheck 잘 됨, submit 잘 됨. 이때의 submit 된 경로는 file:///d:/tmp/test.html?submit=true ( submit 이라는 hidden param 이 있음)

이제부터 문제입니다.

file:///d:/tmp/test.html?submit=true
=> 다시 링크 클릭시 file:///d:/tmp/test.html?submit=true#
=> submit 버튼 누를경우 uncheck 만 되고 submit 안됨.
=> URL 은 어떤때는 file:///d:/tmp/test.html?submit=true#
어떤때는 file:///d:/tmp/test.html?submit=true => # 사라짐
=> submit 을 다시 한번 누르면 submit 되고 URL 은 file:///d:/tmp/test.html?submit=true

이렇게 됩니다.

그래서, 위의 case 만으로 판단할 경우

1. 특별히 param 이 넘어오지 않은 경우, 맨 뒤의 # 유무와 관계없이 submit 잘 됨.
2. param 이 넘어올 경우 , a 테그에 의한 # 이 붙어버린 경우
ㄱ. # 만 없어진다?
ㄴ. 그냥 되는 때도 있다?

의 애매모호한 상황입니다. (일단 결국 저는 a 테그가 아니라 span 에 onclick event 를 붙여버렸습니다. :shock: )

IE 6.0 에서는 그냥 매번 submit 되고, 저는 FF 1.0.4 영문판을 쓰고 있습니다.

1. 버그라고 봐야 하나?
2. 아닌가? 코딩에 문제가 있는것인가?


곁다리 질문:
강제적으로 submit 시키기 위해 위의 소스코드에

Code: Select all

<form name="form1" ction="test.html" onsubmit="selectAll(false);document.forms[0].submit();">
했더니 document.forms[0].submit 은 method 가 아니라는 오류가 뜹니다.
이것은 왜 나오는지 혹시 / 무엇이 잘못되었을까요.
박민권
해커
해커
Posts: 724
Joined: 2005 01 31 22:33 55
Location: 대한민국
Contact:

피곤해서..

Post by 박민권 »

제가 좀 피곤해서 대충 훑어 보고 답변 드립니다. ㅜ_ㅜ

<a href="#" onclick="selectAll()" >selectAll</a>

아마도 위의 코드를

<a href="#" onclick="selectAll(); return false;" >selectAll</a>

라고 수정하시면 문제가 해결될 듯합니다.

onclick가 실행된후 return false;를 하지 않으면 href 속성의 링크가 실행됩니다.

아마 이 문제가 아닌가 싶습니다.

넘 피곤하네요. zzZZZ
kingori
Posts: 28
Joined: 2004 10 21 16:54 08
Contact:

Post by kingori »

아! 잘 됩니다! 이렇게 간단히 해결될 것을!! T_T
Post Reply

Who is online

Users browsing this forum: Semrush [Bot] and 0 guests