File tree Expand file tree Collapse file tree 2 files changed +40
-2
lines changed Expand file tree Collapse file tree 2 files changed +40
-2
lines changed Original file line number Diff line number Diff line change @@ -1269,4 +1269,41 @@ describe('vModel', () => {
12691269 expect ( foo . selected ) . toEqual ( true )
12701270 expect ( bar . selected ) . toEqual ( true )
12711271 } )
1272+
1273+ // #10503
1274+ test ( 'equal value with a leading 0 should trigger update.' , async ( ) => {
1275+ const setNum = function ( this : any , value : any ) {
1276+ this . num = value
1277+ }
1278+ const component = defineComponent ( {
1279+ data ( ) {
1280+ return { num : 0 }
1281+ } ,
1282+ render ( ) {
1283+ return [
1284+ withVModel (
1285+ h ( 'input' , {
1286+ id : 'input_num1' ,
1287+ type : 'number' ,
1288+ 'onUpdate:modelValue' : setNum . bind ( this ) ,
1289+ } ) ,
1290+ this . num ,
1291+ ) ,
1292+ ]
1293+ } ,
1294+ } )
1295+
1296+ render ( h ( component ) , root )
1297+ const data = root . _vnode . component . data
1298+
1299+ const inputNum1 = root . querySelector ( '#input_num1' ) !
1300+ expect ( inputNum1 . value ) . toBe ( '0' )
1301+
1302+ inputNum1 . value = '01'
1303+ triggerEvent ( 'input' , inputNum1 )
1304+ await nextTick ( )
1305+ expect ( data . num ) . toBe ( 1 )
1306+
1307+ expect ( inputNum1 . value ) . toBe ( '1' )
1308+ } )
12721309} )
Original file line number Diff line number Diff line change @@ -86,9 +86,10 @@ export const vModelText: ModelDirective<
8686 el [ assignKey ] = getModelAssigner ( vnode )
8787 // avoid clearing unresolved text. #2302
8888 if ( ( el as any ) . composing ) return
89-
9089 const elValue =
91- number || el . type === 'number' ? looseToNumber ( el . value ) : el . value
90+ ( number || el . type === 'number' ) && ! / ^ 0 \d / . test ( el . value )
91+ ? looseToNumber ( el . value )
92+ : el . value
9293 const newValue = value == null ? '' : value
9394
9495 if ( elValue === newValue ) {
You can’t perform that action at this time.
0 commit comments