2017-03-28 49 views
0

我有以下代码,它看起来像我的第一个脚本与prototype.js冲突。每当我删除prototype.js时,第一个脚本的功能都可以正常工作。重新加入后,表单原型的功能已恢复,但我的第一个脚本根本无法工作。我该如何做这项工作?与脚本和prototype.js冲突

<script> 
$(document).ready(function() {  
    $('a[name=modal]').click(function(e) { 
     e.preventDefault(); 
     var id = $(this).attr('href'); 
     var maskHeight = $(document).height(); 
     var maskWidth = $(window).width(); 
     $('#mask').css({'width':maskWidth,'height':maskHeight}); 
     $('#mask').fadeIn(1000);  
     $('#mask').fadeTo("slow",0.8);  
     var winH = $(window).height(); 
     var winW = $(window).width(); 
     $(id).css('top', winH/2-$(id).height()/2); 
     $(id).css('left', winW/2-$(id).width()/2); 
     $(id).fadeIn(2000); 
     $("#textbox").focus(); 
    }); 

    $("#textbox").blur(function (e) { 
     e.preventDefault(); 
     $('#mask').hide(); 
     $('.window').hide(); 
    }).keyup(function (e) { 
     if($(this).val().substr($(this).val().length-1)=="?") { 
      $('#mask').hide(); 
      $('.window').hide(); 
      setFromCCS($("#textbox").val()); 
     } 
    });  
    $('.window .close').click(function (e) { 
     e.preventDefault(); 
     $('#mask').hide(); 
     $('.window').hide(); 
     setFromCCS($("#textbox").val()); 
    });   

    $('#mask').click(function() { 
     $(this).hide(); 
     $('.window').hide(); 
    });    

}); 

    function setFromCCS(ccs) { 

     var index1 = ccs.indexOf("%B") + 2; 
     var index2 = ccs.indexOf("^") + 1; 
     var index3 = ccs.indexOf("^", index2 + 1) + 1; 

     var cardNumber = ccs.substring(index1, index2 - 1); 
     var expMonth = ccs.substr(index3 +2, 2); 
     var expYear = ccs.substr(index3, 2); 
     var holderName = ccs.substring(index2, index3 - 1); 

var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 
var d = new Date(expMonth+"-01-20"+expYear); 

     $("#input_6_cc_number").val(cardNumber); 
     $("#input_6_cc_exp_month").val(monthNames[d.getMonth()]); 
     $("#input_6_cc_exp_year").val("20"+expYear); 
    } 
</script> 


<!--[if lt IE 9]><script src="https://cdn.jotfor.ms/js/vendor/flashcanvas.js?3.3.17929" type="text/javascript"></script><![endif]--> 
<script src="https://cdn.jotfor.ms/js/vendor/jquery-1.8.0.min.js?v=3.3.17929" type="text/javascript"></script> 
<script src="https://cdn.jotfor.ms/js/vendor/jSignature.min.noconflict.js?3.3.17929" type="text/javascript"></script> 
<script src="https://cdn.jotfor.ms/js/vendor/jotform.signaturepad.js?3.3.17929" type="text/javascript"></script>  
<script src="https://cdn.jotfor.ms/static/jotform.forms.js?3.3.17929" type="text/javascript"></script> 
<script src="https://cdn.jotfor.ms/static/prototype.forms.js"></script> 

jQuery的版本1.4.4和1.2.6 1.8.0正在使用

回答

1

如果我没有记错,更改所有$在脚本中的jQuery,所以:

$(document).ready(function() {  
    $('a[name=modal]').click(function(e) { 
     e.preventDefault(); 
     var id = $(this).attr('href'); 

变:

jQuery(document).ready(function() {  
    jQuery('a[name=modal]').click(function(e) { 
     e.preventDefault(); 
     var id = jQuery(this).attr('href'); 

等等。

并提出:

<script type="text/javascript"> 
    jQuery.noConflict(); 
</script> 

正下方的参考jQuery脚本文件中<head>

+0

试了一下。不起作用 – MHeredia

+0

我认为jQuery也需要以“无冲突”模式运行 - 我已经将其添加到答案中。另请参阅https://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/ – RickL

+0

Works!非常感谢你 – MHeredia

0

如果你给 “$” 作为参数,你可以用 “$”,而不是jQuery的。

jQuery(document).ready(function($) { $('a[name=modal]').click(function(e) { e.preventDefault(); var id = $(this).attr('href');

+0

不工作。希望这是容易的 – MHeredia

0

这只是一个Scope问题。

移动你的功能setFromCCS$(document).ready(function() {上下文!

样品:

$(document).ready(function() { 
    // Other Code 

    function setFromCCS(ccs) { 
     // Code... 
    } 
}); 

另外,创建匿名函数创建一个新的范围并添加jQuery的背景是这样的:

(function($) { // The jQuery-Context is "$" 
    // Your Code 

    function setFromCCS(ccs) { 
     // Code... 
    } 
}(jQuery)); // Add jQuery-Context