最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

jquery - trailing comma problem, javascript - Stack Overflow

programmeradmin7浏览0评论

I'm currently trying hard to get my jQuery to work in IE7, when I Lint the following:

$(".regflow").validate({
    errorLabelContainer: $("#error-message"),
    rules: {
        txtTextOnly: {required: true,textOnly: true},
        txtNumbersOnly: {required: true,numbersOnly: true},
        txtPhoneOnly: {required: true,phoneOnly: true},
        txtAreaCodeOnly: {required: true,numbersOnly: true},
        txtSimCodeOnly: {required: true,simCodeOnly: true},
        txtCprOnly1: {required: true,numbersOnly: true},
        txtCprOnly2: {required: true,cprOnly1: true},
        txtMailOnly: {required: true,mailOnly: true}
    },

    messages: {
        txtTextOnly: {required: "Dette felt skal udfyldes"},
        txtNumbersOnly: {required: "Dette felt skal udfyldes"},
        txtPhoneOnly: {required: "Dette felt skal udfyldes"},
        txtAreaCodeOnly: {required: "Dette felt skal udfyldes"},
        txtSimCodeOnly: {required: "Dette felt skal udfyldes"},
        txtCprOnly1: {required: "Dette felt skal udfyldes"},
        txtCprOnly2: {required: "Dette felt skal udfyldes"},
        txtMailOnly: {required: "Dette felt skal udfyldes"}
    },
});

... I get this error from Lint: "warning: trailing comma is not legal in ECMA-262 object initializers"

Does anyone know what this means, and how do I fix it?

I'm currently trying hard to get my jQuery to work in IE7, when I Lint the following:

$(".regflow").validate({
    errorLabelContainer: $("#error-message"),
    rules: {
        txtTextOnly: {required: true,textOnly: true},
        txtNumbersOnly: {required: true,numbersOnly: true},
        txtPhoneOnly: {required: true,phoneOnly: true},
        txtAreaCodeOnly: {required: true,numbersOnly: true},
        txtSimCodeOnly: {required: true,simCodeOnly: true},
        txtCprOnly1: {required: true,numbersOnly: true},
        txtCprOnly2: {required: true,cprOnly1: true},
        txtMailOnly: {required: true,mailOnly: true}
    },

    messages: {
        txtTextOnly: {required: "Dette felt skal udfyldes"},
        txtNumbersOnly: {required: "Dette felt skal udfyldes"},
        txtPhoneOnly: {required: "Dette felt skal udfyldes"},
        txtAreaCodeOnly: {required: "Dette felt skal udfyldes"},
        txtSimCodeOnly: {required: "Dette felt skal udfyldes"},
        txtCprOnly1: {required: "Dette felt skal udfyldes"},
        txtCprOnly2: {required: "Dette felt skal udfyldes"},
        txtMailOnly: {required: "Dette felt skal udfyldes"}
    },
});

... I get this error from Lint: "warning: trailing comma is not legal in ECMA-262 object initializers"

Does anyone know what this means, and how do I fix it?

Share Improve this question asked Nov 30, 2009 at 13:27 timkltimkl 3,33912 gold badges59 silver badges71 bronze badges 3
  • Firefox will parse the code fine with or without the trailing comma, which is misleading. Internet Explorer 7/8 (and probably below) does not. – Pekka Commented Nov 30, 2009 at 13:34
  • This is one case when IE keeps to the standard but Firebox does not! – Ian Ringrose Commented Nov 30, 2009 at 13:50
  • 1 Firefox would give you a strict warning, but that will no longer happen in Firefox 3.6 since this is allowed behavior in ES5. – sdwilsh Commented Nov 30, 2009 at 20:11
Add a comment  | 

5 Answers 5

Reset to default 11

Remove the trailing comma - the comma at the end of the following part:

 messages: {
        txtTextOnly: {required: "Dette felt skal udfyldes"},
        txtNumbersOnly: {required: "Dette felt skal udfyldes"},
        txtPhoneOnly: {required: "Dette felt skal udfyldes"},
        txtAreaCodeOnly: {required: "Dette felt skal udfyldes"},
        txtSimCodeOnly: {required: "Dette felt skal udfyldes"},
        txtCprOnly1: {required: "Dette felt skal udfyldes"},
        txtCprOnly2: {required: "Dette felt skal udfyldes"},
        txtMailOnly: {required: "Dette felt skal udfyldes"}
    },

While creating an object {} or an array [], you separate individual elements with a comma. But here there is an additional comma after the last item like [a, b, c,] - that is not allowed as per ECMA-262.

The extra comma near the bottom:

$(".regflow").validate({
    errorLabelContainer: $("#error-message"),
    rules: {
        txtTextOnly: {required: true,textOnly: true},
        txtNumbersOnly: {required: true,numbersOnly: true},
        txtPhoneOnly: {required: true,phoneOnly: true},
        txtAreaCodeOnly: {required: true,numbersOnly: true},
        txtSimCodeOnly: {required: true,simCodeOnly: true},
        txtCprOnly1: {required: true,numbersOnly: true},
        txtCprOnly2: {required: true,cprOnly1: true},
        txtMailOnly: {required: true,mailOnly: true}
    },

    messages: {
        txtTextOnly: {required: "Dette felt skal udfyldes"},
        txtNumbersOnly: {required: "Dette felt skal udfyldes"},
        txtPhoneOnly: {required: "Dette felt skal udfyldes"},
        txtAreaCodeOnly: {required: "Dette felt skal udfyldes"},
        txtSimCodeOnly: {required: "Dette felt skal udfyldes"},
        txtCprOnly1: {required: "Dette felt skal udfyldes"},
        txtCprOnly2: {required: "Dette felt skal udfyldes"},
        txtMailOnly: {required: "Dette felt skal udfyldes"}
    }, //<--- this one!!!!
});

Is it not talking about:

    }, // This comma here?
}); 

on the second to last line?

Remove the last comma from the second last line:

$(".regflow").validate({
    errorLabelContainer: $("#error-message"),
    rules: {
        txtTextOnly: {required: true,textOnly: true},
        txtNumbersOnly: {required: true,numbersOnly: true},
        txtPhoneOnly: {required: true,phoneOnly: true},
        txtAreaCodeOnly: {required: true,numbersOnly: true},
        txtSimCodeOnly: {required: true,simCodeOnly: true},
        txtCprOnly1: {required: true,numbersOnly: true},
        txtCprOnly2: {required: true,cprOnly1: true},
        txtMailOnly: {required: true,mailOnly: true}
    },

    messages: {
        txtTextOnly: {required: "Dette felt skal udfyldes"},
        txtNumbersOnly: {required: "Dette felt skal udfyldes"},
        txtPhoneOnly: {required: "Dette felt skal udfyldes"},
        txtAreaCodeOnly: {required: "Dette felt skal udfyldes"},
        txtSimCodeOnly: {required: "Dette felt skal udfyldes"},
        txtCprOnly1: {required: "Dette felt skal udfyldes"},
        txtCprOnly2: {required: "Dette felt skal udfyldes"},
        txtMailOnly: {required: "Dette felt skal udfyldes"}
    }
});

I know this was asked a while ago, but this might be helpful. If you run your JavaScript through JSLint it will tell you if there are any of these "extra commas."

发布评论

评论列表(0)

  1. 暂无评论