Do you have a live example page? - jake
On Tue, Jun 24, 2008 at 1:07 PM, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > Hi, > > First off, the caveat, I'm a noob. However, I have a small piece of > code that is causing some odd behaviour in FF 2 and 3 but not in other > browsers (IE6 & 7, Safari 3 are the ones I've tested). > > The code inspects a text input and on each keyup issues an ajax > request. The target PHP file checks whether the input matches a string > and if so the jQuery code then disables the text input field, scans > the page for PayPal add to basket buttons (normally 7 off them) and > adjusts each form hidden field amount and button text by 2 pounds (the > forms are not encrypted). > > This all seems to work very well on every browser I've got immediate > access to but not FF 3 (Mac) or FF 2 (Win). On these browsers the > changes to the hidden fields persist across page reloads so if I input > the correct code then refresh the page and input the correct code > again then the form fields and buttons will be adjusted by 4 pounds > and not just two. This behaviour will continue as many times as I can > be bothered to refresh and reenter the correct code. What's > particularly odd is the button values are reset to the originals after > each page refresh, just not the hidden fields amounts. > > I've no doubt that this is down to me a) not understanding how the DOM > really works and b) not really understanding how jQuery works and c) > writing crappy code. However, I'd really appreciate some guidance and > explanation. My code is pasted below. > > Cheers > > Greg > > $(document).ready(function(){ > // reset the discount input > $('#discountCode').attr('disabled', '').val(''); > > $('#discountCode').keyup(function() { > var inputValue = $('#discountCode').val(); > > $.get('/assets/data/discount.php', {code: inputValue}, > function(data) { > if (data == 'true') > { > // if code is correct we disable the > input > $('#discountCode').attr('disabled', > 'disabled'); > > // and show the tick mark > $('#correctCode').css('display', > 'inline'); > > // get each hidden input amount > $("#main form > input[name='amount']").each(function() { > var originalCost = > $(this).val(); > // apply the discount > var discountCost = > originalCost - 2; > // set the discount in the > hidden amount fields > $(this).val(discountCost); > // Change the button text > var newButtonText = > '£'+discountCost+' Add to basket'; > > $(this).parent().next('.paypal_button').val(newButtonText); > // reset variables > originalCost = 0; > discountCost = 0; > }); > }; > }); > }); > }); >