In my opinion the problem of it not triggering the second time when your
.php file has loaded a new form is because it is a new .select tag!The not
triggering has nothing to do with including of the .js file.
What you need to ensure is after the $.post, when you update the form using

$('#searchbox').html(data);

you should at the same time actually be attaching the 'change' trigger to
the '.selector'

I hope you understand.

Here is how it should be done in my opinion :

function onSelectorChange() {

$("#loadingbox").show();

      var brand = $('#brand').val()
      var oldbrand = $('#oldbrand').val()
      var model = $('#model').val()
      var freegift = $('#freegift').val()
      var minutes = $('#minutes').val()
      var texts = $('#texts').val()
      var contractlength = $('#contractlength').val()
      var price = $('#price').val()
      var phoneprice = $('#phoneprice').val()

      var selectednetworks = [];
           $('@name=network:checked').each(function() {
             selectednetworks.push($(this).val());
           });

      $.post("searchformbox.php", {
'selectednetworks[]':selectednetworks, phoneprice: phoneprice, price:
price, brand: brand, model: model, freegift: freegift, minutes:
minutes,
texts: texts, contractlength: contractlength, oldbrand: oldbrand },
   onPost
}

$('.selector').change(onSelectorChange);

function onPost() {
     $("#searchbox").html(data);
     $('.selector').change(onSelectorChange);
}

I hope the syntax & the bracket '{', '}' are in correct order above.
But more importantly I hope you get the idea...

Thanks & Regards,
Dhruva Sagar.


Ted Turner <http://www.brainyquote.com/quotes/authors/t/ted_turner.html>  -
"Sports is like a war without the killing."

On Fri, Aug 21, 2009 at 2:52 PM, m...@polyvisual.co.uk <
m...@polyvisual.co.uk> wrote:

>
> Hi all,
>
> Can someone help? I'm having a problem with $.post() and including
> external .js files.
>
> I include my jquery in the header of each page:
>
> <script type="text/javascript" src="includes/common.js"></script>
>
> I have a php file which includes a form [an external php file called
> searchformbox.php]. Each time a <select><option> is changed in the
> form, jquery handles the submit by doing a $.post() and sending all
> the form variables back to searchformbox.php. The searchformbox.php
> with the new form options is reloaded its <div> by using .html()
>
> What I have found, is that if I don't re-include the external .js file
> in searchformbox.php, the jquery does not trigger the second time a
> <select><option> is changed.
>
> The answer [it seems] is to re-include the external .js file in
> searchformbox.php. However, this causes the jquery to be triggered
> twice (obviously causing twice the number of mysql queries and a GET
> to reload the common.js file).
>
> I [think I] understand why the jquery is triggered twice, but I can't
> understand how to stop it. It seems like a catch 22 problem... can
> anyone help?
>
> Thanks :)
>
> Here's the jquery I use for the form resubmit [each <select> has the
> class .selector]:
>
> $(".selector").change(function(){
>
>       $("#loadingbox").show();
>
>
>       var brand = $('#brand').val()
>       var oldbrand = $('#oldbrand').val()
>       var model = $('#model').val()
>       var freegift = $('#freegift').val()
>       var minutes = $('#minutes').val()
>       var texts = $('#texts').val()
>       var contractlength = $('#contractlength').val()
>       var price = $('#price').val()
>       var phoneprice = $('#phoneprice').val()
>
>       var selectednetworks = [];
>            $('@name=network:checked').each(function() {
>              selectednetworks.push($(this).val());
>            });
>
>       $.post("searchformbox.php", {
> 'selectednetworks[]':selectednetworks, phoneprice: phoneprice, price:
> price, brand: brand, model: model, freegift: freegift, minutes:
> minutes,
> texts: texts, contractlength: contractlength, oldbrand: oldbrand },
>
>       function(data){
>               $("#searchbox").html(data);
>       }
> );
>
> });

Reply via email to