Array achter een aangegeven variabele
Ik ga dit zo goed mogelijk verwoorden. Ik ben nu bezig met het maken van een domein checker, die is inmiddels werkende. Maar ik wil er nog een functie bij plaatsen namelijk dat als je bijv. (mediamarkt.) intypt dat je automatisch een rij krijgt zodra je een PUNT neerzet met domein namen die in de array staan. Dus bijvoorbeeld ik type in 'mediamarkt.' dan zie je 'mediamarkt.com, mediamarkt.nl, mediamarkt.net' en zodra ik 'mediamarkt.n' intype dat je alleen nog de domein namen ziet met de .nl en .net aan het einde. Ik hoop wat informatie hierover te krijgen en alvast bedankt.
Met vriendelijke groet,
Koen Mooijman
Zoiets zoek ik alleen wil ik die variabelen pas zien zodra ik de "."/PUNT intype, wat moet ik daarvoor doen om dat voor elkaar te krijgen.
Mvg,
Koen
Meestal worden autocompletes getriggered door een bepaalde hoeveelheid tekst in te typen, of na elke toetsaanslag. In jouw geval dient deze pas te gaan zoeken als je wat tekst plus een punt hebt ingetypt. Je zult dan dus elke toetsaanslag moeten controleren of aan deze conditie is voldaan (bijvoorbeeld met een reguliere expressie waarmee je een tekstpatroon kunt herkennen), en dan pas gaan zoeken naar mogelijke resultaten.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>autocomplete demo</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.12.4.js"></script>
<script src="//code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</head>
<body>
<label for="autocomplete">probeer google. of phphulp. :</label>
<input id="autocomplete">
</body>
<script>
$('#autocomplete').autocomplete({
// verander source naar iets als "search.php" om de data van de server af te halen, zie de documentatie op https://jqueryui.com/autocomplete/#remote
source: [ "google.com", "google.nl", "phphulp.nl" ],
// disable de autocomplete in eerste instantie
disabled: true,
// minimaal drie karakters inclusief de punt
minLength: 3
})
$('#autocomplete').keyup(function(e) {
// de tot dusver ingetypte tekst
var searchtext = $(this).val();
// als er een punt (.) aangetroffen wordt in de tekst
if (searchtext.indexOf('.') > -1)
{
// enable de autocomplete
$(this).autocomplete('enable');
// zoek vervolgens direct op de tekst die we hebben tot dusver
$(this).autocomplete('search', searchtext);
} else {
// indien er geen punt meer in de tekst aangetroffen wordt disable dan de autocomplete
$(this).autocomplete('disable');
}
});
</script>
</html>
<html>
<head>
<meta charset="utf-8">
<title>autocomplete demo</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.12.4.js"></script>
<script src="//code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</head>
<body>
<label for="autocomplete">probeer google. of phphulp. :</label>
<input id="autocomplete">
</body>
<script>
$('#autocomplete').autocomplete({
// verander source naar iets als "search.php" om de data van de server af te halen, zie de documentatie op https://jqueryui.com/autocomplete/#remote
source: [ "google.com", "google.nl", "phphulp.nl" ],
// disable de autocomplete in eerste instantie
disabled: true,
// minimaal drie karakters inclusief de punt
minLength: 3
})
$('#autocomplete').keyup(function(e) {
// de tot dusver ingetypte tekst
var searchtext = $(this).val();
// als er een punt (.) aangetroffen wordt in de tekst
if (searchtext.indexOf('.') > -1)
{
// enable de autocomplete
$(this).autocomplete('enable');
// zoek vervolgens direct op de tekst die we hebben tot dusver
$(this).autocomplete('search', searchtext);
} else {
// indien er geen punt meer in de tekst aangetroffen wordt disable dan de autocomplete
$(this).autocomplete('disable');
}
});
</script>
</html>
Je zal waarschijnlijk de data vanaf de server willen laden met AJAX. Hiervoor moet je dan de optie "source" een URI geven in plaats van een array. Bijvoorbeeld source: search.php. search.php moet dan een json array teruggeven met gevonden resultaten.
search.php wordt aangeroepen met een $_GET variabele 'term'. Bij wijze van een testje:
search.php:
Code (php)
1
2
3
4
2
3
4
<?php
$term = strtolower(trim(strip_tags($_GET['term'])));
echo json_encode(array($term.'com', $term.'nl', $term.'org'));
?>
$term = strtolower(trim(strip_tags($_GET['term'])));
echo json_encode(array($term.'com', $term.'nl', $term.'org'));
?>
Toevoeging op 24/09/2018 16:26:38:
Live demo: https://codepen.io/anon/pen/KxLqay
Heel erg bedankt alleen ik krijg een melding - Notice: Undefined index: term in D:\school\logica\htdocs\script\index.php on line 2
["com","nl","org"] - . Wat moet ik doen om dat te kunnen fixen?
mvg,
Koen
Welke URL gebruik je?
http://localhost/script/index.php?term=avocado
Maar via de autocomplete moet dit vanzelf gaan. Ik neem aan dat je de stappen hebt gevolgd om het via AJAX op te halen i.p.v.
vaste array.
Gewijzigd op 25/09/2018 10:50:54 door - Ariën -
Ook met een vaste array doet hij het niet en dat is raar want opzich zou ik het met een array kunnen doen want ik heb maar een paar domeinen nodig. Maar het enige dat hij correct is het gene wat bij het stukje code: source: [ "google.com", "google.nl", "phphulp.nl" ], staat. Hoe krijg ik het voor elkaar dat hij alleen de .com/.nl/.net bijv krijg als ik iets anders intype dan wat er in de source staat.
http://localhost/script/index.php?term=niks en zie er eens wat json uit te krijgen
Open eerst eens Ik krijg er niks uit, het enige wat ik eruit krijg is wat er in de source: [ ] staat. dus search.php. Dus als ik search. intype krijg ik eronder inderdaad search.php. Dus hij triggered het wel na de punt en na minimaal 3 tekens. Maar alleen wat er in de source staat als tekst.
Koen M op 25/09/2018 15:45:40:
Maar alleen wat er in de source staat als tekst.
search.php geeft de broncode terug? Is er lokaal dan wel een webserver actief die PHP ondersteunt?
Toevoeging op 25/09/2018 16:30:55:
Laatmaar! ik heb hem jongens, Heel erg bedankt voor jullie hulp!
Wat was de oplossing? :-)
source: [ "search.php" ] van gemaakt maar je moest er blijkbaar source: "search.php" van te maken dus zonder de []. En daarna deed hij het gewoon.