2011-10-09 7 views
2

저는 AJAX 기반의 shoutbox를 설계하고 있습니다. http://businessgame.be/shoutbox.phponsubmit 함수를 호출하지 않습니다.

스크립트는 Google 크롬에서 완벽하게 작동하지만 다른 브라우저는 예상대로 작동하지 않습니다.

새 메시지를 외치려면 입력 텍스트 필드를 소유하는 양식이 있습니다. Enter 키를 누를 때 양식이 전송되므로 Enter 키를 누르기 만하면되기 때문에 제출 단추를 생략했습니다.

function shout() { 
alert("test"); 
     // Post shout and clear textField 
     if(getLength("txtShout")) { 
      AjaxUpdate("./includes/shout.php?message=" + getItemValue("txtShout"), refreshShoutBox); 
      setItemValue("txtShout", ""); 
     } 

     // Stop submit 
     return false; 
    } 

보통을, 외침 함수를 호출해야 스크립트, AJAX와는 소리를 추가하고 그래서 양식을하지 않습니다 false를 반환하는 요청을 보낼 것입니다 :

<form method="POST" action="" onsubmit="javascript: return shout();" enctype="multipart/form-data"> 
<input type="text" style="width: 100%;" name="txtShout" id="txtShout" maxlength="600" autocomplete="off" title="Shout!" placeholder="Shout!"> 
</form> 

는 소리의 기능은 다음과 같습니다 제출하십시오.

그러나 Google 크롬을 제외한 모든 브라우저에서 양식이 제출됩니다. 함수에 alert()를 호출하여 코드가 잘못되었거나 코딩 실수인지 확인하지만 경고가 표시되지 않는지 확인합니다.

+0

시도해 보셨나요? onsubmit = "return shout();" 'javascript :'없이는? – Corbin

+0

예, 그래도 문제가 해결되지 않습니다. 브라우저가 onsubmit 문을 건너 뛰고있는 것 같아서 경고가 표시되지 않습니다 ... 경고 기능 만 변경하려고했지만 작동하지 않습니다 : /. –

+0

그럴 경우 Firebug로 확인해야합니다. 방화 광구 콘솔을 사용하여 JavaScript 오류를 찾을 수 있습니다. – Corbin

답변

1

글쎄, 어떤 이유로 다른 브라우저에서 작동하는 onsubmit 기능을 얻을 수 없습니다. 그것을 고치기 위해 필사적으로 계속 찾는 대신에 다른 접근법을 찾기로 결심했습니다. 이제 텍스트 상자에 수신기를 추가하여 입력 키인 경우 키를 누른 다음 해당 기능을 호출하는지 확인합니다.

그래도 작동하는 것처럼 보이지만 양식을 삭제해야했습니다. 그렇지 않으면 제출하게 될 것이기 때문에 ^^. init 함수에()를 호출

function shoutEnterListener() { 
    // Get object 
    var domObject = document.getElementById("txtShout"); 

    // Get shoutbox html code 
    if(domObject) { 
     domObject.onkeydown = shoutEnter; 
     domObject.onkeypress = shoutEnter; 
    } 
} 

function shoutEnter(e) { 
    var keyCode; 

    // Check which key has been pressed 
    if (window.event) { 
     keyCode = window.event.keyCode; 
    } else { 
     keyCode = e.which; 
    } 

    // If enter, shout! 
    if (keyCode == 13) { 
     shout(); 
    } 
} 

shoutEnterListener :

그래서 지금은 이렇게 뭔가를 얻었다. 이것은 또한 코딩 오류가 전혀 없었지만 순수하게 함수가 전혀 호출되지 않았다는 것을 증명합니다.

이전 문제에 대한 해결책을 아직 찾지 못했다면 조금 지루하고 집중적 인 코드이기 때문에 알려 주시기 바랍니다.

관련 문제