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
5 Answers
Reset to default 11Remove 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."