Probleem submit/enter

Status
Niet open voor verdere reacties.

Dennis90H

Nieuwe gebruiker
Lid geworden
21 mei 2008
Berichten
3
Hallo allemaal,

Ik heb een probleem met mijn javascript/AJAX chatbox. Als ik enter heel vaak achter elkaar druk, en ik ga daarna typen dan stuurt hij elke keer 1 letter door. Hij onthoudt zegmaar de submits en voert ze daarna nog uit als er in de input iets komt te staan.

Javascript:

Code:
function sendComment() {
	currentChatText = document.forms['chatForm'].elements['chatbarText'].value;
	if (currentChatText != '' & (httpSendChat.readyState == 4 || httpSendChat.readyState == 0)) {
		//n='+ currentName+'
		param = 'c='+ currentChatText;	
		httpSendChat.open("POST", SendChaturl, true);
		httpSendChat.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  	httpSendChat.onreadystatechange = handlehHttpSendChat;
  	httpSendChat.send(param);
  	document.forms['chatForm'].elements['chatbarText'].value = '';
	} else {
		setTimeout('sendComment();',3000);
	}
}

de HTML:

Code:
	<form id="chatForm" name="chatForm" onsubmit="return false;" action="">

		<input type="text" size="62" maxlength="100" name="chatbarText" id="chatbarText" onblur="checkStatus('');" onfocus="checkStatus('active');" />
		<input type="hidden" size="1" maxlength="1" name="SecondBar" id="SecondBar2" />

		<input onclick="sendComment();" type="submit" id="submit" name="submit" value="Verzenden" />

	</form>

Wie kan mij helpen deze 'spammethode' tegen te gaan? En Weet iemand misschien ook waarom in IE6 de enter niet werkt, en de cursor niet terug gaat naar het veld, als je iets hebt getypt en geklikt hebt op submit?
 
Code:
function sendComment() {
	currentChatText = document.forms['chatForm'].elements['chatbarText'].value;
	if (currentChatText == ''){
	    return;}
	if (currentChatText != '' & (httpSendChat.readyState == 4 || httpSendChat.readyState == 0)) {
		//n='+ currentName+'
		param = 'c='+ currentChatText;	
		httpSendChat.open("POST", SendChaturl, true);
		httpSendChat.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  	httpSendChat.onreadystatechange = handlehHttpSendChat;
  	httpSendChat.send(param);
  	document.forms['chatForm'].elements['chatbarText'].value = '';
	} else {
		setTimeout('sendComment();',3000);
	}
}

werkt dat? Een extra if zodat als de comment gelijk is aan niks stopt hij de functie.
 
Hartstikke bedankt, hij werkt!

Nu moet ik de enterbug nog fixen, want chatten zonder enter gaat heel erg vervelend. Weet jij toevallig hoe ik dat kan oplossen?

Ik wil return-false aan houden, maar ook bij submit die sendComment(), hoe krijg ik er 2 als onsubmit?

Dit is de verwerking ervan:
Code:
function sendComment() {
	currentChatText = document.forms['chatForm'].elements['chatbarText'].value;
	if (currentChatText == ''){
	    return;}
	if (currentChatText != '' & (httpSendChat.readyState == 4 || httpSendChat.readyState == 0)) {
		//n='+ currentName+'
		param = 'c='+ currentChatText;	
		httpSendChat.open("POST", SendChaturl, true);
		httpSendChat.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  	httpSendChat.onreadystatechange = handlehHttpSendChat;
  	httpSendChat.send(param);
  	document.forms['chatForm'].elements['chatbarText'].value = '';
	} else {
		setTimeout('sendComment();',3000);
	}
}
// afhandeling chatberichtzending
function handlehHttpSendChat() {
  if (httpSendChat.readyState == 4) {
  	receiveChatText(); // chat refreshen na plaatsen chatbericht
  }
}
 
Laatst bewerkt:
Enter probleem

Met dit stukje code ervoor zou hij moeten submitten zodra er op enter word gedrukt:

Code:
document.onkeydown = function(e){ 
if (keyCodePressed(e) == 13)
    {
        sendComment();
    }
};

function keyCodePressed(e){
    return (getEvent(e).which) ? getEvent(e).which : getEvent(e).keyCode;
};

    function getEvent(e){
    if (!e) 
        return window.event;
    else
        return e;
   };


function sendComment() {
	currentChatText = document.forms['chatForm'].elements['chatbarText'].value;
	if (currentChatText == ''){
	    return;}
	if (currentChatText != '' & (httpSendChat.readyState == 4 || httpSendChat.readyState == 0)) {
		//n='+ currentName+'
		param = 'c='+ currentChatText;	
		httpSendChat.open("POST", SendChaturl, true);
		httpSendChat.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  	httpSendChat.onreadystatechange = handlehHttpSendChat;
  	httpSendChat.send(param);
  	document.forms['chatForm'].elements['chatbarText'].value = '';
	} else {
		setTimeout('sendComment();',3000);
	}
}
// afhandeling chatberichtzending
function handlehHttpSendChat() {
  if (httpSendChat.readyState == 4) {
  	receiveChatText(); // chat refreshen na plaatsen chatbericht
  }
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan