【问题标题】:jQuery calling $.fn function from other filejQuery 从其他文件调用 $.fn 函数
【发布时间】:2018-03-05 16:33:00
【问题描述】:

您好,我在尝试从另一个文件中读取 jQuery 函数时遇到问题。

misFunciones.js

function formatString() {
var args = Array.prototype.slice.call(arguments, 1);
return arguments[0].replace(/\{(\d+)\}/g, function (match, index) {
    return args[index];
});
}


jQuery.fn.soloNumerosDecimales = function () {
    return this.each(function () {
        $(this).keydown(function (e) {
            var key = e.charCode || e.keyCode || 0;



            if (e.keyCode == 190 || e.keyCode == 110 || e.keyCode == 188) {
                e.preventDefault();
                $(this).val($(this).val() + ',');
            }


            return (
                (key == 65 || key == 86 || key == 67) && (e.ctrlKey === true || e.metaKey === true) ||
                key == 8 ||
                key == 9 ||
                key == 13 ||
                key == 46 ||
                key == 110 ||
                key == 190 ||
                (key >= 35 && key <= 40) ||
                (key >= 48 && key <= 57) ||
                (key >= 96 && key <= 105));
        });
    });
};    

当在同一个文件中时,该函数可以完美运行,但是当我尝试从另一个 .js 文件中调用它时,我得到了

Uncaught TypeError: $(...).soloNumerosDecimales is not a function

进口

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/cldr.js"></script>
<script src="~/Scripts/cldr/event.js"></script>
<script src="~/Scripts/cldr/supplemental.js"></script>
<script type="text/javascript" src="~/Scripts/globalize.js"></script>
<script type="text/javascript" src="~/Scripts/globalize/number.js"></script>
<script type="text/javascript" src="~/Scripts/jquery.validate.js"></script>
<script type="text/javascript" 
src="~/Scripts/jquery.validate.unobtrusive.js"></script>
<script type="text/javascript" src="~/Scripts/jquery.validate.globalize.js"></script>

加载cldr json

<script>
    $.when(
        $.getJSON("/Scripts/cldr/supplemental/likelySubtags.json"),
        $.getJSON("/Scripts/cldr/supplemental/numberingSystems.json"),
        $.getJSON("/Scripts/cldr/numbers.json")
    ).then(function () {
        console.log("start slicing");
        return [].slice.apply(arguments, [0]).map(function (result) {
            console.log("slicing done");
            return result[0];
        });
    }).then(Globalize.load).then(function () {
        Globalize.locale("es-AR");
        console.log("Locale set to es-AR");
        }).then(console.log("LOADED EVERYTHING"));
</script>

添加 misFunciones.js 的脚本

<script src="~/Scripts/misFunciones.js"></script>

尝试使用它

 $(document).ready(function () {
 $("#ref_primaria_positivo").soloNumerosDecimales();
});

非常感谢您,并为我的英语感到抱歉:(

【问题讨论】:

  • 你必须包含 jQuery,然后包含在 jQuery 命名空间上创建方法的文件,然后让你的逻辑使用它。
  • @Taplar 我已经包含了 jQuery,如何在 jQuery 命名空间上添加方法?泰!
  • 你已经用你的$.fn.soloNumerosDecimales = function () { 逻辑做到了。 jQuery 只需要在该点之前包含,因此在执行该逻辑之前,$ 在页面上以jQuery 的形式存在。
  • 你所拥有的应该可以工作。由于在 misFunciones.js 中定义所述函数,它可能无法正常工作
  • 你的意思是在.js文件中添加吗?

标签: javascript jquery function


【解决方案1】:

解决方案是在 document.ready 函数之前调用该函数

  $("#ref_primaria_positivo").soloNumerosDecimales();
  $(document).ready(function () {
  )};

谢谢大家!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 2013-11-22
    相关资源
    最近更新 更多