2009-11-30 7 views
7

Attualmente sto cercando duramente per ottenere il mio jQuery per lavorare in IE7, quando ho Lint il seguente:trailing problema virgola, javascript

$(".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"} 
    }, 
}); 

... ottengo questo errore da Lint: "warning: la virgola finale non è legale negli inizializzatori dell'oggetto ECMA-262 "

Qualcuno sa cosa significa e come lo risolvo?

+0

Firefox analizzerà il codice con o senza la virgola finale, che è fuorviante. Internet Explorer 7/8 (e probabilmente sotto) no. –

+0

Questo è un caso in cui IE rimane allo standard ma Firebox no! –

+1

Firefox ti darebbe un severo avvertimento, ma ciò non accadrà più in Firefox 3.6 poiché questo comportamento è permesso in ES5. – sdwilsh

risposta

11

Rimuovere la virgola a - la virgola alla fine della seguente parte:

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"} 
    }, 

Durante la creazione di un oggetto o un array {}[], separare i singoli elementi con una virgola. Ma qui c'è una virgola aggiuntiva dopo l'ultimo elemento come [a, b, c,] - che non è consentito secondo ECMA-262.

+0

Firefox in realtà ti darebbe un severo avvertimento su questo, ma nota che questo comportamento è cambiato in ES5. Vedi https://bugzilla.mozilla.org/show_bug.cgi?id=508637 per maggiori dettagli. – sdwilsh

6

La virgola in più vicino alla parte inferiore:

$(".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!!!! 
}); 
+0

Thx a bunch, un errore n00b, lo so :) – timkl

3

Non è forse parlando:

}, // This comma here? 
}); 

sulla penultima riga?

2

rimuovere l'ultimo comma della penultima riga:

$(".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"} 
    } 
}); 
0

So che questo è stato chiesto qualche tempo fa, ma questo potrebbe essere utile. Se esegui il tuo JavaScript tramite JSLint, ti verrà indicato se esiste una qualsiasi di queste "virgole extra".