Javascript加载离线但不是drupal

时间:2012-12-11 21:09:33

标签: javascript jquery drupal

我正在尝试合并Javascript并将其加载到drupal中。问题是执行它。我知道这是一个简单的问题,但我的知识并没有扩展到将davascript添加到drupal页面之外。当我在Dreamweaver离线下加载它时,它会完美地加载并运行。

$(document).ready(function(){
//function for contact form dropdown
function contact() {
    if ($("#contactForm").is(":hidden")){
        $("#contactForm").slideDown("slow");
        $("#backgroundPopup").css({"opacity": "0.7"});
        $("#backgroundPopup").fadeIn("slow"); 

我知道问题在于前三行。因为当我在chrome中加载它时它告诉我问题在第1行。

我知道它与drupal有关,我不知道是否需要在Drupal中以不同方式加载javascript。

给出的错误是:UnCaught Type Error:对象窗口的Property $不是函数。

请求无知......

$(document).ready(function(){
//function for contact form dropdown
function contact() {
    if ($("#contactForm").is(":hidden")){
        $("#contactForm").slideDown("slow");
        $("#backgroundPopup").css({"opacity": "0.7"});
        $("#backgroundPopup").fadeIn("slow"); 
    }
    else{
        $("#contactForm").slideUp("slow");
        $("#backgroundPopup").fadeOut("slow");  
    }
}

//run contact form when any contact link is clicked
$(".contact").click(function(){contact()});

//animation for same page links #
$('a[href*=#]').each(function() {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'')
    && location.hostname == this.hostname
    && this.hash.replace(/#/,'') ) {
      var $targetId = $(this.hash), $targetAnchor = $('[name=' + this.hash.slice(1) +']');
      var $target = $targetId.length ? $targetId : $targetAnchor.length ? $targetAnchor : false;
        if ($(this.hash).length) {
            $(this).click(function(event) {
                var targetOffset = $(this.hash).offset().top;
                var target = this.hash;
                event.preventDefault();            
                $('html, body').animate({scrollTop: targetOffset}, 500);
                return false;
            });
        }
    }
});



  //submission scripts
 $('.contactForm').submit( function(){
    //statements to validate the form   
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    var email = document.getElementById('e-mail');
    if (!filter.test(email.value)) {
        $('.email-missing').show();
    } else {$('.email-missing').hide();}
    if (document.cform.name.value == "") {
        $('.name-missing').show();
    } else {$('.name-missing').hide();} 
    if (document.cform.message.value == "") {
        $('.message-missing').show();
    } else {$('.message-missing').hide();}      
    if ((document.cform.name.value == "") || (!filter.test(email.value)) || (document.cform.message.value == "")){
        return false;
    } 

    if ((document.cform.name.value != "") && (filter.test(email.value)) && (document.cform.message.value != "")) {
        //hide the form
        $('.contactForm').hide();

        //show the loading bar
        $('.loader').append($('.bar'));
        $('.bar').css({display:'block'});

        //send the ajax request
        $.post('mail.php',{name:$('#name').val(),
                          email:$('#e-mail').val(),
                          message:$('#message').val()},

        //return the data
        function(data){
          //hide the graphic
          $('.bar').css({display:'none'});
          $('.loader').append(data);
        });

        //waits 2000, then closes the form and fades out
        setTimeout('$("#backgroundPopup").fadeOut("slow");      $("#contactForm").slideUp("slow")', 2000);

        //stay on the page
        return false;
    } 
  });
//only need force for IE6  
$("#backgroundPopup").css({  
    "height": document.documentElement.clientHeight 
});  
});

1 个答案:

答案 0 :(得分:0)

$默认情况下在Drupal 7中不是jQuery的别名,您需要像这样传递它:

(function($) {
  // Your code here
})(jQuery);

有关详细信息,请参阅Managing JavaScript in Drupal 7