Javascript only works if placed directly on the page

2

I have some functions and they only work if placed in the same file where the code is that will use them. Separate with:

<script type="text/javascript" src="js/funcoes.js"></script>

Functions:

    $(function($){


$('#enviar').click(function (e) {


    var linhas = $('#linhas').val();
    var plantas = $('#plantas').val();
    var combo=$('#haoum').val();
    var area = $('#area').val();
    var resultado;
    var resultado2;


     if ( combo=="ha" ) {
        resultado=(Number(area)*Number(10000))/(Number(linhas)*Number(plantas));
         $("#divPrincipal").html('<p class="alert-success">Você terá aproximadamente ' + resultado + ' plantas </p>');
         $("#divsecundaria").html('<p class="alert-success">Com estas configurações você poderá colher em média ' + area*Number(15) + ' toneladas </p>');
     }
     else
     {

        resultado=(Number(area))/(Number(linhas)*Number(plantas));
        $("#divPrincipal").html('<p class="alert-success">Você terá aproximadamente ' + resultado + ' plantas </p>');
        $("#secundaria").html('<p class="alert-success">Com estas configurações você poderá colher em média ' + (area/Number(24200))*Number(15) + ' toneladas </p>');

     }

 });
});

$(function($){


$('#enviar2').click(function (e) {


    var linhas = $('#linhas2').val();
    var plantas = $('#plantas2').val();
    var combo=$('#haoum2').val();
    var area = $('#area2').val();
    var resultado;



     if ( combo=="ha" ) {
        resultado=(Number(area))/(Number(linhas)*Number(plantas));
         $("#divPrincipal2").html('<p class="alert-success">Você terá aproximadamente ' + resultado + ' plantas </p>');
     }
     else
     {
        resultado=(Number(area)/Number(10000))/(Number(linhas)*Number(plantas));
        $("#divPrincipal2").html('<p class="alert-success">Você terá aproximadamente ' + resultado + ' plantas </p>');
     }

  });
 });

Does anyone know where it is wrong?

    
asked by anonymous 11.12.2014 / 19:39

1 answer

4

You're probably having trouble getting your file on the page, make sure jQuery has been linked on the page before your code.

To make it easier, instead of creating two scopes of:

$(function($){ });

You could put your .click () inside a document ready:

$(document).ready(function(){
    $('#seletor1').click(function(){
       ...
    });
        $('#seletor2').click(function(){
       ...
    });
});

In addition to ensuring that events are "clipped" to elements after page loading, the code becomes more readable

    
15.12.2014 / 20:37