Scirra / Construct-bugs

Public bug report submissions for Construct 3 and Construct Animate. Please read the guidelines then click the 'Issues' tab to get started.
https://www.construct.net
107 stars 83 forks source link

Setting a TextInput's text breaks its "maxlength" attribute #8317

Closed Melburnian70 closed 4 days ago

Melburnian70 commented 6 days ago

Problem description

Setting the "maxlength" attribute on a TextInput works, until you set that TextInput's text in another action.

Attach a .c3p

https://www.dropbox.com/scl/fi/od1sx9don03vumwfc2duw/textinput-test.c3p?rlkey=xjn8sg6lwg0nc2yxrxsyvwx2h&dl=0

Steps to reproduce

  1. Run the project
  2. Enter text into the TextInput

Observed result

You will see that you can enter as many characters as you like.

Expected result

Your input should be restricted by the "maxlength" attribute.

More details

  1. Disable the line: TextInput: Set text to "test" and run the project again.
  2. Now the TextInput is correctly restricted to the "maxlength" of characters.

Affected browsers/platforms: Chrome/macOS

First affected release: r407.2

System details

View details Platform information Product: Construct 3 r407.2 (stable) Browser: Chrome 130.0.6723.92 Browser engine: Chromium Context: webapp Operating system: macOS 15.1.0 Device type: desktop Device pixel ratio: 2 Logical CPU cores: 8 Approx. device memory: 8 GB User agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Language setting: en-US Local storage Storage quota (approx): 276 gb Storage usage (approx): 186 mb (0.1%) Persistant storage: No Browser support notes This list contains missing features that are not required, but could improve performance or user experience if supported. Nothing is missing. Everything is OK! WebGL information Version string: WebGL 2.0 (OpenGL ES 3.0 Chromium) Numeric version: 2 Supports NPOT textures: yes Supports GPU profiling: no Supports highp precision: yes Vendor: Google Inc. (Apple) Renderer: ANGLE (Apple, ANGLE Metal Renderer: Apple M1 Pro, Unspecified Version) Major performance caveat: no Maximum texture size: 16384 Point size range: 1 to 511 Extensions: EXT_clip_control EXT_color_buffer_float EXT_color_buffer_half_float EXT_conservative_depth EXT_depth_clamp EXT_disjoint_timer_query_webgl2 EXT_float_blend EXT_polygon_offset_clamp EXT_render_snorm EXT_texture_compression_bptc EXT_texture_compression_rgtc EXT_texture_filter_anisotropic EXT_texture_mirror_clamp_to_edge EXT_texture_norm16 KHR_parallel_shader_compile NV_shader_noperspective_interpolation OES_draw_buffers_indexed OES_sample_variables OES_shader_multisample_interpolation OES_texture_float_linear WEBGL_blend_func_extended WEBGL_clip_cull_distance WEBGL_compressed_texture_astc WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_compressed_texture_pvrtc WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context WEBGL_multi_draw WEBGL_polygon_mode WEBGL_provoking_vertex WEBGL_render_shared_exponent WEBGL_stencil_texturing Audio information System sample rate: 48000 Hz Output channels: 8 Output interpretation: speakers Supported decode formats: WebM Opus (audio/webm;codecs=opus) WebM Vorbis (audio/webm;codecs=vorbis) MPEG-4 Opus (audio/mp4;codecs=opus) MPEG-4 AAC (audio/mp4;codecs=mp4a.40.2) MP3 (audio/mpeg) FLAC (audio/flac) PCM WAV (audio/wav;codecs=1) Supported encode formats: WebM Opus (audio/webm;codecs=opus) MPEG-4 Opus (audio/mp4;codecs=opus) MPEG-4 AAC (audio/mp4;codecs=mp4a.40.2) Video information Supported decode formats: WebM AV1 (video/webm;codecs=av01.0.00M.08) WebM VP9 (video/webm;codecs=vp9) WebM VP8 (video/webm;codecs=vp8) MPEG-4 AV1 (video/mp4;codecs=av01.0.00M.08) MPEG-4 H.265 (video/mp4;codecs=hev1.1.2.L93.B0) MPEG-4 H.264 (video/mp4;codecs=avc1.420034) Supported encode formats: WebM AV1 (video/webm;codecs=av01.0.00M.08) WebM VP9 (video/webm;codecs=vp9) WebM VP8 (video/webm;codecs=vp8) WebM H.264 (video/webm;codecs=avc1.420034) MPEG-4 AV1 (video/mp4;codecs=av01.0.00M.08) MPEG-4 VP9 (video/mp4;codecs=vp9) MPEG-4 H.264 (video/mp4;codecs=avc1.420034)
AshleyScirra commented 4 days ago

The Text Input object has its own 'Set max length' action which you are not using. Instead you're setting the "maxlength" attribute directly, but whenever the Text Input object updates its state, it will apply the max length set by the action, which if unused is no limit. So you should just use the 'Set max length' action instead. In general wherever there is an action to modify something, you should use that instead of bypassing it as that causes a conflict in the state of the HTML element.

Melburnian70 commented 4 days ago

Thanks Ashley, I completely missed that 'Set max length' action! Cheers, Roberto.