0

我有以下代码,看起来我的第一个脚本与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

4

3 回答 3

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>

于 2017-03-28T18:13:45.673 回答
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
于 2017-03-28T19:02:20.303 回答
0

如果你给 "$" 作为参数,你可以使用 "$" 代替 jQuery。

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

于 2017-03-28T18:22:42.637 回答