Good morning Scott,
thanks for replying my question!
Your code is ok, but unluckily it doesn't help me to solve my problem.
I'm not sure a hundred percent, because I'm a newbie to javascript programming, but I can't see great differences among your and mine way to define the combo box.
Only difference is you wrote:

xtype: 'combo'

while I wrote:

xtype: 'combobox'

I tried to change that configuration in my code, but it still doesn't work
Do you have any idea of reason of this strange behaviour ?
It amazes me, because I did other combos the same way and they work perfectly.

A possible solution

I've found a possible solution for this matter, it isn't very elegant because it performs a forcing, but it makes the form work correctly during submit.
Here's the code, I hope it could be useful to someone:

You have a displayField and a valueField configured but you don't have forceSelection set to true. That doesn't make much sense to me. I would guess that this, combined with queryMode: 'remote', is causing a new record to be added to the store as the user types. This new entry won't have the appropriate valueField so it'll just be submitted exactly as typed.

It doesn't look like there's any need for you to use the 'hiddenName' config, and having it set the same as your 'name' config could be causing issues. I'd try removing that.

Hi Rob and thanks for intervening in this discussion, I appreciate all suggestions
I've set up config option 'hiddenName' because yesterday I found a blog about ext js combo box where a user suggests to use that option to be sure that combo submits valueField instead of displayField.
There was a code snippet where 'hiddenName' and 'name' were the same, so I tried to reproduce that in my code.
I know this isn't a good way to write code, the best would be solve problems by reading api docs.

Hi skirtle,
thanks for your tip, but I believe this is not my case.
If I set 'forceSelection' to true I force the user to select one of combo's items and prevent the possibility that user types something in the combo, without selecting an item.
When I test my app (and detect the problem subject of this conversation) I always select an item from combo, without typing anything in it.
The config option 'query mode: remote' is due to the fact that data store isn't local, it is loaded via an ajax request to the server.

You have a displayField and a valueField configured but you don't have forceSelection set to true. That doesn't make much sense to me. I would guess that this, combined with queryMode: 'remote', is causing a new record to be added to the store as the user types. This new entry won't have the appropriate valueField so it'll just be submitted exactly as typed.

Hi skirtle,thanks for your tip, but I believe this is not my case. If I set 'forceSelection' to true I force the user to select one of combo's items and prevent the possibility that user types something in the combo, without selecting an item. When I test my app (and detect the problem subject of this conversation) I always select an item from combo, without typing anything in it. The config option 'query mode: remote' is due to the fact that data store isn't local, it is loaded via an ajax request to the server.

If I set 'forceSelection' to true I force the user to select one of combo's items and prevent the possibility that user types something in the combo, without selecting an item.

forceSelection doesn't prevent typing, it just forces the user to type one of the options from the list. Perhaps that's what you meant but I just wanted to make sure we're clear on that.

With your current configuration you're allowing users to type in a totally arbitrary value. If they type in a value that isn't in the list then it won't have an id. I'm curious to know how that would work in the context of your scenario?

Originally Posted by Enrico.Massone

The config option 'query mode: remote' is due to the fact that data store isn't local, it is loaded via an ajax request to the server.

Apologies if you already understand this but I just want to make sure we're clear about the queryMode setting.

queryMode refers to where the data is filtered, not where it came from originally. It's difficult to know from what you've said so far whether or not you should be using 'local' or 'remote' but it's a common mistake to use 'remote' simply because the data is being loaded from a server.

You may find these articles helpful. They don't address your case specifically but they do give an overview of some of the main config options, including working with remote data: