未捕获的TypeError:对象函数没有方法'拆分'

时间:2013-07-31 20:22:35

标签: javascript jquery

控制台中没有错误,但该功能似乎没有像预期那样添加破折号。此外,代码在网站上创建格式问题意味着这有问题。

代码:

    $('#Inventory_accountNumber').blur(function(){
        var accounts = $(this).val;
        var accountsNum = [];
        accountNum = accounts.split(",");
        for(var i=0;i<accountNum.length;i++) {
            var newstr = '';
            if(accountNum[i].length == 24) {
                newstr += accountNum[i].substring(0,4) + '-';
                newstr += accountNum[i].substring(4,7) + '-';
                newstr += accountNum[i].substring(7,10) + '-';
                newstr += accountNum[i].substring(10,14) + '-';
                newstr += accountNum[i].substring(14,20) + '-';
                newstr += accountNum[i].substring(20,24) + '-';
                newstr += '0000-000';
                accountNum[i] = newstr;
            }
            else if(accountNum[i].length == 32) {
                newstr += accountNum[i].substring(0,4) + '-'
;               newstr += accountNum[i].substring(4,7) + '-';
                newstr += accountNum[i].substring(7,10) + '-';
                newstr += accountNum[i].substring(10,14) + '-';
                newstr += accountNum[i].substring(14,20) + '-';
                newstr += accountNum[i].substring(20,24) + '-';
                newstr += '0000-000';
                accountNum[i] = newstr;
            }
        }
        accountNum.join(',');
        $(this).val = accountNum;

    });

JSFiddle

2 个答案:

答案 0 :(得分:2)

这是你的罪魁祸首:

var accounts = $(this).val;

那应该是:

var accounts = $(this).val();

你所拥有的是一个函数引用,而不是函数返回语句的值。

答案 1 :(得分:1)

var accounts = $(this).val();

var accounts = $(this);
accountNum = accounts.val().split(",");

如果您尝试在控制台中调试或打印.. inputselector.val打印出整个函数

另外,低于

$(this).val = accountNum;使用$(this).val(accountNum);

是设置值的错误方法