Hi,
Beetje lastig verhaal ben ik bang, daarom probeer ik het maar even uit te leggen. Ik heb een formulier waarbij ik real-time validatie doe door middel van Form.Element.Observer die bij wijzigingen een Ajax.Request doet. De feedback van de Ajax kan ofwel true zijn (het veld is akkoord) ofwel string zijn (bij foutief), waarbij de string de te tonen error message bevat. Deze error message geef ik vervolgens weer met Prototip (een tooltip voor Prototype)
Wat is nu het probleem?
Ik gebruik drop-downs die velden toevoegen/verwijderen van het formulier (bijvoorbeeld de vraag bank of giro, die ofwel een veld voor bank ofwel een veld voor giro toont (hier heb ik zo m'n redenen voor)). Het probleem zit hem nu in het feit dat als de user bijvoorbeeld eerst foutief een banknummer invoert, vervolgens een prototip te zien krijgt met een foutmelding en daarna kiest voor Giro, het veld wel netjes verdwijnt maar de Prototip niet! Ik heb al vanuit de functie geprobeerd het object met de prototip te benaderen, maar ben zelf meer een PHP'er dus kom er niet echt uit.
Iemand die ff onderstaande code kan bekijken?
Wat hier nog ontbreekt zijn eerder pogingen om de variabelen check_bank_account_number en check_giro_account_number (die volgens mij beiden een instantie van het object Tip bevatten) mee te geven aan de toggleBankForm en vanuit daar proberen te 'hiden'. Echter allemaal zonder resultaat. Iemand een idee?
Beetje lastig verhaal ben ik bang, daarom probeer ik het maar even uit te leggen. Ik heb een formulier waarbij ik real-time validatie doe door middel van Form.Element.Observer die bij wijzigingen een Ajax.Request doet. De feedback van de Ajax kan ofwel true zijn (het veld is akkoord) ofwel string zijn (bij foutief), waarbij de string de te tonen error message bevat. Deze error message geef ik vervolgens weer met Prototip (een tooltip voor Prototype)
Wat is nu het probleem?
Ik gebruik drop-downs die velden toevoegen/verwijderen van het formulier (bijvoorbeeld de vraag bank of giro, die ofwel een veld voor bank ofwel een veld voor giro toont (hier heb ik zo m'n redenen voor)). Het probleem zit hem nu in het feit dat als de user bijvoorbeeld eerst foutief een banknummer invoert, vervolgens een prototip te zien krijgt met een foutmelding en daarna kiest voor Giro, het veld wel netjes verdwijnt maar de Prototip niet! Ik heb al vanuit de functie geprobeerd het object met de prototip te benaderen, maar ben zelf meer een PHP'er dus kom er niet echt uit.
Iemand die ff onderstaande code kan bekijken?
JavaScript:
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
| // functie die de drop-down van de keuze voor banktype in de gaten houdt function toggleBankForm(fieldName, toggleElement1, toggleElement2, toggleDiv1, toggleDiv2, errorImage1, errorImage2) { $(toggleDiv2).hide(); new Form.Element.EventObserver(fieldName, function(element, value) { if(value == 1) { $(toggleDiv2).hide(); $(toggleDiv1).show(); } else if(value == 2) { $(toggleDiv1).hide(); $(toggleDiv2).show(); } }) } // Functie die het invoer veld voor banknummer in de gaten houdt en de ajax validatie start bij een wijziging function checkfield(fieldName, data, action, update, use_tip) { var tip; var params; if(use_tip === undefined) { use_tip=false; } else { use_tip=true; } if(data === undefined) { data = fieldName; } new Form.Element.EventObserver(fieldName, function(element, value) { new Ajax.Request(action, {asynchronous:true, evalScripts:true, onComplete:function(request, json) { if(request.responseText == '1' || request.responseText == '2') { // Dit is als het veld akkoord is, code niet boeiend } else { if(use_tip) { tip = new Tip(update, request.responseText, { effect: 'appear', showOn: 'click', offset: {x:40, y:-8}, className: 'error', hideOn: {event: 'custom'}, hideAfter: 0, hook: {target: 'middleRight', tip: 'middleLeft'} }); $(update).simulate('click'); } } return tip; }, parameters:serialize_fields(data)})}) } // hier de 'calls' naar de functies var check_bank_account_number = new checkfield('OrderBankAccountNumber', 'OrderBankAccountNumber','/orders/validate_field','bank_account_number',true); var check_giro_account_number = new checkfield('OrderGiroAccountNumber', 'OrderGiroAccountNumber','/orders/validate_field','giro_account_number',true); var toggle_account_number = new toggleBankForm('OrderAccountType','OrderBankAccountNumber','OrderGiroAccountNumber','DivBankAccountNumber','DivGiroAccountNumber','bank_account_number','giro_account_number'); |
Wat hier nog ontbreekt zijn eerder pogingen om de variabelen check_bank_account_number en check_giro_account_number (die volgens mij beiden een instantie van het object Tip bevatten) mee te geven aan de toggleBankForm en vanuit daar proberen te 'hiden'. Echter allemaal zonder resultaat. Iemand een idee?