vervang keycode 13 voor keycode 32

Status
Niet open voor verdere reacties.

senatorman

Gebruiker
Lid geworden
8 mrt 2016
Berichten
18
Hoi,

Kunnen jullie mij helpen met mijn vraag

Ik wil op mijn webshop dmv een javasript de "Enter" key vervangen voor de "Space"
Dus, als men op de enter toets drukt, dat er dan één spatie gemaakt word.
Zelf heb ik geen enkel verstand van javascript, maar met wat google kwam ik erachter dat de
Enter = keycode 13
Spatie = keycode 32

Momenteel gebruik ik onderstaande code die de enter key uitschakelt, maar ik zou graag willen dat er bij het gebruik van de enterkey een spatie wordt toegepast.
Welke code zou ik moeten hebben om dit te genereren?

function stopRKey(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
}

document.onkeypress = stopRKey;


Mvgr
Senatorman
 
Laatst bewerkt:
Probeer het is met de volgende functie
Code:
String.fromCharCode(72,65,76,76,79);
 
Probeer het is met de volgende functie
Code:
String.fromCharCode(72,65,76,76,79);

Als ik bovenstaande code alleen gebruik dan gebeurt er niets. Of dient deze code als aanvulling op hetgeen ik nu al gebruik?

function stopRKey(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
}

document.onkeypress = stopRKey;
 
Kreeg ook de tip om in mijn gebruikte script 13 te vervangen voor 32.

Ook dit geeft niet het gewenste resutlaat, maar schakelt de spatiebutton uit.

Mijn wens is dus dat de enterbutton een spatie geeft
 
Hoi senatorman,

de meest voor de hand liggende vraag op dit moment is: waar wil je dat een spatie wordt toegevoegd?
De code die je gebruikt is waarschijnlijk bedoeld om te voorkomen dat een formulier per ongeluk wordt verzonden.
Wat jij wilt is, vermoed ik, ervoor zorgen dat er geen newline wordt toegevoegd in een textarea?
Maar er is pas een goed antwoord te geven op je vraag als je uitlegt wat je wilt.

@googlemuscle: LOL

Met vriendelijke groet,
Arjan.
 
Ik heb een webshop met een zoekveld, na ingave van een zoekwoord, worden direct (ajaxscript) resultaten weergegeven door een externe searchprovider (instantSearch) zonder op enter te hoeven drukken. Drukt de bezoeker wel enter, dan
wordt er in de eigen datebase gezocht, wat met 40000 producten een enorme database belasting is en wel tot 3 minuten kan duren voordat de site resultaten weergeeft.

Soms laat instantsearch pas resultaten zien als er een spatie achter een zoekwoord woord gegeven. Ik wil dus dat er geen enter meer kan worden gebruikt en dat deze als spatie gaan functioneren.

Zie mijn shop: www.computer-connections.nl
 
Kijk, nu komen we ergens.
Ik heb nu geen tijd om de boel te testen maar ik denk dat je zoiets zou kunnen doen:
(ik ga er even vanuit dat het zoekveld het id 'zoekveld' heeft.)

[js]
function stopRKey(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=="text")) {
var obj = getElementById("zoekveld");
if(obj.focus) {
obj.value += ' ';
}
return false;
}

document.onkeypress = stopRKey
[/js]

Probeer het maar eens uit en laat even weten of het werkt.

Met vriendelijke groet,

Arjan.
 
Laatst bewerkt:
helaas werkt dit niet. Hij doet de normale enter met waarbij de site voor een paar minuten zoekt/hangt

ik zie geen 32 in je code, dan wordt de spatie zowiezo toch niet aangesproken?
 
misschien werkt dit wel. Morgen heb ik denk ik wat meer tijd. Dan kan ik wat uitproberen.

[js]
function stopRKey(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=="text")) {
var obj = getElementById("zoekveld");
if(document.activeElement == obj) {
obj.value += ' ';
}
return false;
}

document.onkeypress = stopRKey
[/js]

ik voeg de spatie toe via de concatenatie-methode van heet String-object. Geen keycode nodig.

Vriendelijke groet,
Arjan.
 
Ja, inderdaad. Foutje van mijn kant. Nu even getest. Dit werkt bij mij prima:
[js]
function stopRKey(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=="text")) {
var obj = document.getElementById("zoekveld");
if(document.activeElement == obj) {
obj.value += ' ';
}
return false;
}

document.onkeypress = stopRKey
[/js]

Succes!
 
Maakt geen verschil. Geeft een enter. Alsof er geen enkel script is toegepast.

Zou kunnen dat het "zoekveld" bij mij anders benoemd moet worden?

function stopRKey(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=="text")) {
var obj = document.getElementById("zoekveld");
if(document.activeElement == obj) {
obj.value += ' ';
}
return false;
}

document.onkeypress = stopRKey
 
Ja, dat zei ik al. Ik was ervan uitgegaan dat het veld 'zoekveld' als id heeft. Je kunt het id uit je htmlcode halen. Verander dan de id in de code die je van mij hebt en niet de naam van het veld (anders werkt je zoekfunctie niet meer...)

Succes!
 
Volgens mij is mijn id"search-param" en heb dit toegepast in de code, maar dit werkt dan niet. M.a.w. Geeft een gewone enter. Volgens mi is de id dan nog steeds verkeerd. kan jij in mijn html code iets zien?

Ik gebruik nu

function stopRKey(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=="text")) {
var obj = getElementById("search-param");
if(obj.focus) {
obj.value += ' ';
}
return false;
}

document.onkeypress = stopRKey
 
Ik kan in jouw htmlcode zien dat het een wonder is dat de site überhaupt draait. Het is een aan elkaar geknipte en geplakte verzameling los zand die bij de minste of geringste windvlaag uit elkaar kan vallen. Ik zou je dan ook willen aanraden om ofwel zelf (in ieder geval de basis) te leren, ofwel iemand in te schakelen die met jouw wensen in de hand een site kan maken die één geheel is. Maar dat is natuurlijk maar een advies.

Na behoorlijk zoekwerk heb ik gevonden hoe het veld heet:
het heet: "input_id_0_suggestor_007".

Succes maar weer, en denk eens na over bovenstaande.
Arjan.
 
Dat het geen nette html code is wist ik, maar dat het een drama is, had ik niet verwacht.

Mijn site bestaat uit wordpress, woocommerce en een heleboel plugins. Deze html code is een gevolg van verschillende plugins die niet op elkaar zijn afgestemd.
Laten opschonen is een optie, maar kan weer toekomstige issues gaan hebben met alle verschillende plugins en woocommerce.

Heb de code getest met input_id_0_suggestor_007 als id. Dit resulteert in een normale enter.

Mogelijk werkt de code wel op een lege html pagina, maar conflicteert deze met een ander script waardoor hij niet werk.

Toch wel vreemd als mijn eerste onderstaande code wel de enter uitschakelt.

function stopRKey(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
}

document.onkeypress = stopRKey;
 
input_id_0_suggestor_007 komt in mijn html code trouwens nergens voor. Hoe heb je die kunnen vinden dan?
 
Dat is toch echt de id die ik zie als ik je site laad (gewoon met de DOM inspector doorlopen). Waarschijnlijk wordt deze dan dynamisch gegenereerd. Dat kan prima de reden zijn waarom het niet werkt. Ik heb het stukje code getest in alle belangrijke browsers en het werkt in allemaal.

Over het knip en plakwerk: het is natuurlijk een keuze. Ik snap dat het aantrekkelijk is om gewoon overal stukjes vandaan te halen en zolang het werkt werkt het. Maar bij mij ging al een alarmbel toe je zei dat de site wel tot drie minuten 'hangt' als je gewoon met <enter> zoekt. Dat wijst op een probleem (of misschien wel meerdere problemen) met je indexen of je query's. Normaal gesproken moeten 40000 records echt geen enkel probleem zijn. Als je overal vandaan lichaamsdelen verzamelt en die aan elkaar naait krijg je nog geen mens. Als je me niet geloofd: lees Frankenstein;) Nogmaals, het is een keuze, maar ik zou een keer geld vrijmaken om een maatwerk-site te laten maken of in ieder geval de boel eens te controleren op interferentie.

Succes en vriendelijke groet,
Arjan.
 
Punt is dat ik graag experimenteer met verschillende plugins. Als ik mijn site en codes voor een boel geld laat opschonen zet ik een stop op de ontwikkeling hiervan. Zelf kan ik dan niet meer nieuwe plugins en aanvullingen installeren omdat dit de opgeschoonde code weer teniet doet. Nieuwe plugins ( die dagelijks met updates komen)kunnen dan ineens niet meer gaan werken. Zo wordt ook het thema regelmatig geupdate.

Zelfs met een schone installatie zonder plugins met 40000 producten die allemaal vele query's en attributen hebben, is het laden van een zoekopdracht een probleem. Hier bestaan verschillende discussietopics over. Kleine shop hebben dit probleem niet maar bij grote shops is dit een bekend probleem waaraan verschillende pluginbouwers hard over aan het brainstormen zijn. Oorzaak is de databasebelasting.
 
ik snap je helemaal. Experimenteren is leuk maar de vraag is of het verstandig is om dit op een live (en commerciële) site te doen. En zoals je nu ondervindt is het allemaal koek en ei als je precies die stukjes code vindt die doen wat je wilt, maar als je iets moet aanpassen naar je specifieke wensen dan wordt het lastig.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan