Project

General

Profile

Bug #6467

Sanitizing a hidden field makes the form unsubmittable

Added by Nicola Chiapolini about 2 years ago. Updated almost 2 years ago.

Status:
Closed
Priority:
High
Assignee:
Target version:
Start date:
02.08.2018
Due date:
21.12.2018
% Done:

100%

Estimated time:
Discuss:

Description

Sanitizing a field hidden by dynamic updates as email makes the form unsubmitable. (The email field seems to be checked even when hidden.)

Code for the example form attached.

test_setup.sql (2.94 KB) test_setup.sql Nicola Chiapolini, 02.08.2018 10:44
email2.png (58.4 KB) email2.png Benjamin Baer, 10.12.2018 11:12
email1.png (80.4 KB) email1.png Benjamin Baer, 10.12.2018 11:12
qfq.pattern.false.png (108 KB) qfq.pattern.false.png Carsten Rose, 11.12.2018 23:47
qfq.pattern.empty.png (109 KB) qfq.pattern.empty.png Carsten Rose, 11.12.2018 23:47
1951
1952
1962
1963

Associated revisions

Revision 6fa1fff3 (diff)
Added by Carsten Rose almost 2 years ago

B6467: 'element-update' now get's 'pattern=<pattern>|false' on element-update. Refs #6467

Revision 803f472b (diff)
Added by Carsten Rose almost 2 years ago

B6467: 'element-update' now get's 'pattern=<pattern>|false' on form-update too. Refs #6467

Revision 143ae04b (diff)
Added by Benjamin Baer almost 2 years ago

Updated elementupdate for pattern, added "false" as an alternative to null

Revision 4309bed7 (diff)
Added by Carsten Rose almost 2 years ago

Fixes #6467, Sanitizing a hidden field makes the form 'unsubmitable'

History

#1 Updated by Carsten Rose about 2 years ago

  • Target version set to next2

#2 Updated by Carsten Rose almost 2 years ago

  • Assignee set to Carsten Rose
  • Priority changed from Normal to High
  • Target version changed from next2 to 18.12.0

#3 Updated by Carsten Rose almost 2 years ago

  • Status changed from New to In Progress

#4 Updated by Carsten Rose almost 2 years ago

  • Status changed from In Progress to New

#5 Updated by Carsten Rose almost 2 years ago

  • Status changed from New to In Progress

#6 Updated by Carsten Rose almost 2 years ago

  • Status changed from In Progress to New
  • Assignee changed from Carsten Rose to Benjamin Baer

Input Felder die hidden sind, sollten im Client nicht auf Gueltigkeit geprueft werden:

Bei 'required' tritt der Fehler nicht auf.

Getestet werden kann auf 'http://webwork16.math.uzh.ch/crose/qfq/index.php?id=form' im Form
'test_hidden-sanitize'

  • Aufruf im FormEditor.
  • Dann auf das Auge klicken.

#7 Updated by Carsten Rose almost 2 years ago

  • Due date set to 10.12.2018

#8 Updated by Carsten Rose almost 2 years ago

  • Target version changed from 18.12.0 to 18.12.1

#9 Updated by Benjamin Baer almost 2 years ago

1951
1952
  • Das Formular funktionierte, das Problem beschreibt einen Fehler bei checktype="email" (und vermutlich anderen Patterns). Formular entsprechend angepasst
  • Das ElementUpdate setzt nicht nur die value auf "!!email!!" wie man hier sieht:
  • Es setzt entfernt auch nicht das Attribut pattern beim entfernen:
Vorschlag:
  • Attribut pattern entfernen in dem eine NULL oder false value gesendet wird (wie bei required).

#10 Updated by Benjamin Baer almost 2 years ago

  • Status changed from New to In Progress
  • Assignee changed from Benjamin Baer to Carsten Rose

#11 Updated by Carsten Rose almost 2 years ago

1962
1963

Hallo Benj

danke fuer die Analyse.

Neu wird "pattern='false'" (zum Test auch "pattern" ohne alles) sowohl im 'form-update' als auch im 'element-update' mitgeschickt.

Das Problem besteht aber weiterhin. Beim Click auf Save erscheint sofort die Melung 'form incomplete - es wird nicht mit dem Server geredet.

Interessant ist das im DOM das Feld 'pattern' wie gewuenscht gesetzt ist (Siehe qfq.pattern.empty.png, qfq.pattern.false.png.) . Das war vor meiner Code Aenderung nicht der Fall.

Kann es sein das qfq.io eigene Datenstrukturen hat um durch die Elemente zu parsen? Ich meine Rafi haette das mal erzaehlt.

Fuer mich sieht es so aus als wenn Du wieder an der Reihe bist.

Vielen Dank

CU
Carsten

#12 Updated by Benjamin Baer almost 2 years ago

also, pattern="false" darf nicht drinstehen. Pattern sollte gar nicht dort sein. pattern = "false" sollte also nie ausgeliefert werden.

Im json sollte pattern: false stehen. Ohne "". Boolean, nicht string.

QFQ redet mit dem Server vor dem Save click, das ist die idee von Element Update. Es ist nicht das Javascript das Felder versteckt und anzeigt, es ist immer PHP der das instruiert.

Es sollte nie ein hidden Feld pattern oder required haben. Weder in der ersten auslieferung, noch nach einem Element Update. Ansonsten geht save nicht.

#13 Updated by Benjamin Baer almost 2 years ago

  • Due date changed from 10.12.2018 to 21.12.2018
  • Assignee changed from Benjamin Baer to Carsten Rose

Javascript Seite soweit erledigt

#14 Updated by Carsten Rose almost 2 years ago

  • Status changed from In Progress to Closed
  • % Done changed from 0 to 100

Also available in: Atom PDF