Sorry its only local right now so I will try to add as much as I can here.

Page with a form has:
        <link rel="stylesheet" type="text/css" href="/css/styles.css" />
        <link rel="stylesheet" type="text/css" href="/css/typography.css" />
        <script type="text/javascript" src="/js/jquery.js"></script>
        <script type="text/javascript" src="/js/jquery.form.js"></script>
        <script type="text/javascript"
src="/js/jquery.validate.js"></script>
        <script type="text/javascript" src="/js/site.js"></script>

Normal html code with my #newAward form, then at the bottom of the page

<script type="text/javascript">
        $(document).ready( function() {
           setValidation('#newAward', validate_awards);
        });
</script>

site.js has just the one function you provided

function setValidation( selector, validator ) {
    
    $(document).ready( function() {
        var $form = $(selector);
        
        $form.submit( function() {
            
            $form.validate( validator );
            var valid = $(this).valid();
            if( valid ) {
                var form_url = $form.attr('action');
                var page_target = form_url.substr(1).replace(new RegExp("/",
"g"), "_");
                var queryString = $form.formSerialize();
                $form.ajaxSubmit({
                    type: 'post',
                    url: form_url + '/',
                    data: queryString,
                    resetForm: true,
                    success: function( response ) {
                        alert( response );
                        $( '#' + page_target ).slideToggle('slow',
function() {
 
$(response).hide().prependTo('#sortable').slideDown('slow');
                        });
                    }
                });
            }
            return false;
        
        });
    });
    
}

I checked with firebug that all the scripts do infact load.

Thanks again,

Dave

-----Original Message-----
From: Michael Geary [mailto:m...@mg.to] 
Sent: November-24-09 11:44 PM
To: jquery-en@googlegroups.com
Subject: Re: [jQuery] Create a function?

Do you have a <script> tag to load your external .js file?

Post a link to a test page and I can tell you for sure what's wrong.

-Mike


On Tue, Nov 24, 2009 at 6:33 PM, Dave Maharaj :: WidePixels.com
<d...@widepixels.com> wrote:


        Sorry. I cant seem to get it to go.
        
        Maybe I did not clearly explain the problem.
        
        I want to put the function like you have below in my external js,
then on my
        html pages that have a form just set it up so all I have to do is
include
        the setValidation( '#newAward', validate_awards ); on those pages so
1
        function gets called for every form.
        
        I put your  function setValidation( selector, validator ) {
        ....
        }
        In my external js
        
        
        On the page with a form I put
        
        <script type="text/javascript">
        $(document).ready( function() {
           setValidation( '#newAward', validate_awards );
        });
        </script>
        
        But when I load the page I get:
        setValidation is not defined
        
        Ideas where I screwed up?
        
        Thanks again.
        

        Dave
        
        -----Original Message-----
        From: Michael Geary [mailto:m...@mg.to]
        Sent: November-24-09 10:02 PM
        To: jquery-en@googlegroups.com
        Subject: Re: [jQuery] Create a function?
        
        
        Your code could end up looking something like this:
        
        function setValidation( selector, validator ) {
        
           $(document).ready( function() {
               var $form = $(selector);
        
               $form.submit( function() {
        
                   $form.validate( validator );
                   var valid = $(this).valid();
                   if( valid ) {
                       var form_url = $form.attr('action');
                       var page_target = form_url.substr(1).replace(new
RegExp("/",
        "g"), "_");
                       var queryString = $form.formSerialize();
                       $form.ajaxSubmit({
                           type: 'post',
                           url: form_url + '/',
                           data: queryString,
                           resetForm: true,
                           success: function( response ) {
                               alert( response );
                               $( '#' + page_target ).slideToggle('slow',
        function() {
        
        $(response).hide().prependTo('#sortable').slideDown('slow');
                               });
                           }
                       });
                   }
                   return false;
        
               });
           });
        
        }
        
        And for the case you listed, you would call it like this:
        
        setValidation( '#newAward', validate_awards );
        
        I threw a $(document).ready() block into that code. You don't need
that if
        your call to the setValidation() function is already inside a
document ready
        callback, but it doesn't do any harm either.
        
        -Mike
        
        
        On Tue, Nov 24, 2009 at 3:48 PM, Dave Maharaj :: WidePixels.com
        <d...@widepixels.com> wrote:
        
        
               I have the exact same code on every page where a form gets
        submitted. How
               can i turn that into a simple function?
        
               The only thing that changes is the
$(this).validate(validate_awards)
        and the
               form ID;
        
               It would be so much easier if the function was in one place
and
        called where
               needed but I cant figure this out.
        
               Something like:
        
        
               $('#newAward').submit(function({
                      myFormFunction(validate_awards, '#newAward');
               });
        
        
               where I could put in the formID and the validation rules to
use
        
        
               CURRENTLY HAVE THIS ON EVERY PAGE: Only the "validate_awards"
and
               "#newAward" changes
        
               $('#newAward').submit(function() {
        
        
                 $(this).validate(validate_awards);
                 var valid = $(this).valid();
                 if (valid) {
        
                 var form_url =  $(this).attr('action');
                 var page_target = form_url.substr(1).replace( new RegExp(
"/"
        ,"g"), "_"
               );
                 var queryString = $('#newAward').formSerialize();
                  $(this).ajaxSubmit({
                   type:    'post',
                   url:      form_url+'/',
                   data:      queryString,
                   resetForm:   true,
                   success:    function(response){
                          alert(response);
                           $('#'+page_target).slideToggle('slow', function
(){
        
        $(response).hide().prependTo('#sortable').slideDown('slow');
        
                           });
                           }
        
        
                  });
                 }
                 return false;
        
                });
        
               Any help would be greatly appreciated.
               Thanks,
        
               Dave
        
        
        
        
        
        No virus found in this incoming message.
        Checked by AVG - www.avg.com
        Version: 9.0.709 / Virus Database: 270.14.76/2519 - Release Date:
11/24/09
        04:16:00
        
        
        
        


No virus found in this incoming message.
Checked by AVG - www.avg.com
Version: 9.0.709 / Virus Database: 270.14.76/2519 - Release Date: 11/24/09
04:16:00



Reply via email to