View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
19209 | Bug reports | Survey editing | public | 2023-10-28 02:42 | 2024-03-12 19:29 |
Reporter | mfavetti | Assigned To | |||
Priority | none | Severity | minor | ||
Status | new | Resolution | open | ||
Product Version | 6.3.x | ||||
Summary | 19209: Question attribute input constraints are not respected while editing a question and clicking save button | ||||
Description | When adding a question and clicking Save or Save and Close buttons or when editing a question and clicking Save and Close button, then html5 validation errors shown, form is not submitted, and no save occurs. However, editing a question and clicking Save button, then html5 validation errors NOT shown, form is submitted, and invalid attribute values saved to db. | ||||
Steps To Reproduce | Use a question type with html5 form constraints (like min/max), for this example I'll use array numbers.
| ||||
Tags | No tags attached. | ||||
Bug heat | 4 | ||||
Complete LimeSurvey version number (& build) | master branch (28e201fe78) | ||||
I will donate to the project if issue is resolved | No | ||||
Browser | |||||
Database type & version | Mariadb 10.6 | ||||
Server OS (if known) | |||||
Webserver software & version (if known) | |||||
PHP Version | 8.1.25 | ||||
small example, not really needed but maybe helpful limesurvey_survey_528728.lss (21,468 bytes)
<?xml version="1.0" encoding="UTF-8"?> <document> <LimeSurveyDocType>Survey</LimeSurveyDocType> <DBVersion>616</DBVersion> <languages> <language>en</language> </languages> <groups> <fields> <fieldname>gid</fieldname> <fieldname>sid</fieldname> <fieldname>group_order</fieldname> <fieldname>randomization_group</fieldname> <fieldname>grelevance</fieldname> </fields> <rows> <row> <gid><![CDATA[5]]></gid> <sid><![CDATA[528728]]></sid> <group_order><![CDATA[1]]></group_order> <randomization_group/> <grelevance><![CDATA[1]]></grelevance> </row> </rows> </groups> <group_l10ns> <fields> <fieldname>id</fieldname> <fieldname>gid</fieldname> <fieldname>group_name</fieldname> <fieldname>description</fieldname> <fieldname>language</fieldname> <fieldname>sid</fieldname> <fieldname>group_order</fieldname> <fieldname>randomization_group</fieldname> <fieldname>grelevance</fieldname> </fields> <rows> <row> <id><![CDATA[5]]></id> <gid><![CDATA[5]]></gid> <group_name><![CDATA[My first question group]]></group_name> <language><![CDATA[en]]></language> <sid><![CDATA[528728]]></sid> <group_order><![CDATA[1]]></group_order> <randomization_group/> <grelevance><![CDATA[1]]></grelevance> </row> </rows> </group_l10ns> <questions> <fields> <fieldname>qid</fieldname> <fieldname>parent_qid</fieldname> <fieldname>sid</fieldname> <fieldname>gid</fieldname> <fieldname>type</fieldname> <fieldname>title</fieldname> <fieldname>preg</fieldname> <fieldname>other</fieldname> <fieldname>mandatory</fieldname> <fieldname>encrypted</fieldname> <fieldname>question_order</fieldname> <fieldname>scale_id</fieldname> <fieldname>same_default</fieldname> <fieldname>relevance</fieldname> <fieldname>question_theme_name</fieldname> <fieldname>modulename</fieldname> <fieldname>same_script</fieldname> </fields> <rows> <row> <qid><![CDATA[15]]></qid> <parent_qid><![CDATA[0]]></parent_qid> <sid><![CDATA[528728]]></sid> <gid><![CDATA[5]]></gid> <type><![CDATA[:]]></type> <title><![CDATA[Q00]]></title> <preg/> <other><![CDATA[N]]></other> <mandatory><![CDATA[N]]></mandatory> <encrypted><![CDATA[N]]></encrypted> <question_order><![CDATA[1]]></question_order> <scale_id><![CDATA[0]]></scale_id> <same_default><![CDATA[0]]></same_default> <relevance><![CDATA[1]]></relevance> <question_theme_name><![CDATA[arrays/multiflexi]]></question_theme_name> <same_script><![CDATA[0]]></same_script> </row> </rows> </questions> <subquestions> <fields> <fieldname>qid</fieldname> <fieldname>parent_qid</fieldname> <fieldname>sid</fieldname> <fieldname>gid</fieldname> <fieldname>type</fieldname> <fieldname>title</fieldname> <fieldname>preg</fieldname> <fieldname>other</fieldname> <fieldname>mandatory</fieldname> <fieldname>encrypted</fieldname> <fieldname>question_order</fieldname> <fieldname>scale_id</fieldname> <fieldname>same_default</fieldname> <fieldname>relevance</fieldname> <fieldname>question_theme_name</fieldname> <fieldname>modulename</fieldname> <fieldname>same_script</fieldname> </fields> <rows> <row> <qid><![CDATA[16]]></qid> <parent_qid><![CDATA[15]]></parent_qid> <sid><![CDATA[528728]]></sid> <gid><![CDATA[5]]></gid> <type><![CDATA[T]]></type> <title><![CDATA[SQ001]]></title> <other><![CDATA[N]]></other> <encrypted><![CDATA[N]]></encrypted> <question_order><![CDATA[0]]></question_order> <scale_id><![CDATA[0]]></scale_id> <same_default><![CDATA[0]]></same_default> <relevance><![CDATA[1]]></relevance> <same_script><![CDATA[0]]></same_script> </row> <row> <qid><![CDATA[17]]></qid> <parent_qid><![CDATA[15]]></parent_qid> <sid><![CDATA[528728]]></sid> <gid><![CDATA[5]]></gid> <type><![CDATA[T]]></type> <title><![CDATA[SQ001]]></title> <other><![CDATA[N]]></other> <encrypted><![CDATA[N]]></encrypted> <question_order><![CDATA[1]]></question_order> <scale_id><![CDATA[1]]></scale_id> <same_default><![CDATA[0]]></same_default> <relevance/> <same_script><![CDATA[0]]></same_script> </row> </rows> </subquestions> <question_l10ns> <fields> <fieldname>id</fieldname> <fieldname>qid</fieldname> <fieldname>question</fieldname> <fieldname>help</fieldname> <fieldname>script</fieldname> <fieldname>language</fieldname> </fields> <rows> <row> <id><![CDATA[15]]></id> <qid><![CDATA[15]]></qid> <question><![CDATA[A first example question. Please answer this question:]]></question> <help><![CDATA[This is a question help text.]]></help> <script/> <language><![CDATA[en]]></language> </row> <row> <id><![CDATA[16]]></id> <qid><![CDATA[16]]></qid> <question/> <language><![CDATA[en]]></language> </row> <row> <id><![CDATA[17]]></id> <qid><![CDATA[17]]></qid> <question/> <language><![CDATA[en]]></language> </row> </rows> </question_l10ns> <question_attributes> <fields> <fieldname>qid</fieldname> <fieldname>attribute</fieldname> <fieldname>value</fieldname> <fieldname>language</fieldname> </fields> <rows> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[answer_width]]></attribute> <value><![CDATA[123]]></value> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[array_filter]]></attribute> <value/> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[array_filter_exclude]]></attribute> <value/> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[array_filter_style]]></attribute> <value><![CDATA[0]]></value> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[cssclass]]></attribute> <value/> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[em_validation_q]]></attribute> <value/> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[em_validation_q_tip]]></attribute> <value/> <language><![CDATA[en]]></language> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[em_validation_sq]]></attribute> <value/> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[em_validation_sq_tip]]></attribute> <value/> <language><![CDATA[en]]></language> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[hidden]]></attribute> <value><![CDATA[0]]></value> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[hide_tip]]></attribute> <value><![CDATA[0]]></value> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[input_boxes]]></attribute> <value><![CDATA[0]]></value> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[input_size]]></attribute> <value/> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[max_answers]]></attribute> <value/> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[maximum_chars]]></attribute> <value/> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[min_answers]]></attribute> <value/> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[multiflexible_checkbox]]></attribute> <value><![CDATA[0]]></value> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[multiflexible_max]]></attribute> <value/> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[multiflexible_min]]></attribute> <value/> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[multiflexible_step]]></attribute> <value><![CDATA[1]]></value> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[page_break]]></attribute> <value><![CDATA[0]]></value> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[parent_order]]></attribute> <value/> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[printable_help]]></attribute> <value/> <language><![CDATA[en]]></language> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[public_statistics]]></attribute> <value><![CDATA[0]]></value> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[random_group]]></attribute> <value/> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[random_order]]></attribute> <value><![CDATA[0]]></value> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[repeat_headings]]></attribute> <value/> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[reverse]]></attribute> <value><![CDATA[0]]></value> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[save_as_default]]></attribute> <value><![CDATA[N]]></value> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[scale_export]]></attribute> <value><![CDATA[0]]></value> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[statistics_graphtype]]></attribute> <value><![CDATA[0]]></value> <language/> </row> <row> <qid><![CDATA[15]]></qid> <attribute><![CDATA[statistics_showgraph]]></attribute> <value><![CDATA[1]]></value> <language/> </row> </rows> </question_attributes> <surveys> <fields> <fieldname>sid</fieldname> <fieldname>gsid</fieldname> <fieldname>admin</fieldname> <fieldname>expires</fieldname> <fieldname>startdate</fieldname> <fieldname>adminemail</fieldname> <fieldname>anonymized</fieldname> <fieldname>format</fieldname> <fieldname>savetimings</fieldname> <fieldname>template</fieldname> <fieldname>language</fieldname> <fieldname>additional_languages</fieldname> <fieldname>datestamp</fieldname> <fieldname>usecookie</fieldname> <fieldname>allowregister</fieldname> <fieldname>allowsave</fieldname> <fieldname>autonumber_start</fieldname> <fieldname>autoredirect</fieldname> <fieldname>allowprev</fieldname> <fieldname>printanswers</fieldname> <fieldname>ipaddr</fieldname> <fieldname>ipanonymize</fieldname> <fieldname>refurl</fieldname> <fieldname>showsurveypolicynotice</fieldname> <fieldname>publicstatistics</fieldname> <fieldname>publicgraphs</fieldname> <fieldname>listpublic</fieldname> <fieldname>htmlemail</fieldname> <fieldname>sendconfirmation</fieldname> <fieldname>tokenanswerspersistence</fieldname> <fieldname>assessments</fieldname> <fieldname>usecaptcha</fieldname> <fieldname>usetokens</fieldname> <fieldname>bounce_email</fieldname> <fieldname>attributedescriptions</fieldname> <fieldname>emailresponseto</fieldname> <fieldname>emailnotificationto</fieldname> <fieldname>tokenlength</fieldname> <fieldname>showxquestions</fieldname> <fieldname>showgroupinfo</fieldname> <fieldname>shownoanswer</fieldname> <fieldname>showqnumcode</fieldname> <fieldname>bouncetime</fieldname> <fieldname>bounceprocessing</fieldname> <fieldname>bounceaccounttype</fieldname> <fieldname>bounceaccounthost</fieldname> <fieldname>bounceaccountpass</fieldname> <fieldname>bounceaccountencryption</fieldname> <fieldname>bounceaccountuser</fieldname> <fieldname>showwelcome</fieldname> <fieldname>showprogress</fieldname> <fieldname>questionindex</fieldname> <fieldname>navigationdelay</fieldname> <fieldname>nokeyboard</fieldname> <fieldname>alloweditaftercompletion</fieldname> <fieldname>googleanalyticsstyle</fieldname> <fieldname>googleanalyticsapikey</fieldname> <fieldname>tokenencryptionoptions</fieldname> </fields> <rows> <row> <sid><![CDATA[528728]]></sid> <gsid><![CDATA[1]]></gsid> <admin><![CDATA[inherit]]></admin> <adminemail><![CDATA[inherit]]></adminemail> <anonymized><![CDATA[N]]></anonymized> <format><![CDATA[I]]></format> <savetimings><![CDATA[I]]></savetimings> <template><![CDATA[inherit]]></template> <language><![CDATA[en]]></language> <additional_languages/> <datestamp><![CDATA[I]]></datestamp> <usecookie><![CDATA[I]]></usecookie> <allowregister><![CDATA[I]]></allowregister> <allowsave><![CDATA[I]]></allowsave> <autonumber_start><![CDATA[0]]></autonumber_start> <autoredirect><![CDATA[I]]></autoredirect> <allowprev><![CDATA[I]]></allowprev> <printanswers><![CDATA[I]]></printanswers> <ipaddr><![CDATA[I]]></ipaddr> <ipanonymize><![CDATA[I]]></ipanonymize> <refurl><![CDATA[I]]></refurl> <showsurveypolicynotice><![CDATA[0]]></showsurveypolicynotice> <publicstatistics><![CDATA[I]]></publicstatistics> <publicgraphs><![CDATA[I]]></publicgraphs> <listpublic><![CDATA[I]]></listpublic> <htmlemail><![CDATA[I]]></htmlemail> <sendconfirmation><![CDATA[I]]></sendconfirmation> <tokenanswerspersistence><![CDATA[I]]></tokenanswerspersistence> <assessments><![CDATA[I]]></assessments> <usecaptcha><![CDATA[E]]></usecaptcha> <usetokens><![CDATA[N]]></usetokens> <bounce_email><![CDATA[inherit]]></bounce_email> <emailresponseto><![CDATA[inherit]]></emailresponseto> <emailnotificationto><![CDATA[inherit]]></emailnotificationto> <tokenlength><![CDATA[-1]]></tokenlength> <showxquestions><![CDATA[I]]></showxquestions> <showgroupinfo><![CDATA[I]]></showgroupinfo> <shownoanswer><![CDATA[I]]></shownoanswer> <showqnumcode><![CDATA[I]]></showqnumcode> <bounceprocessing><![CDATA[N]]></bounceprocessing> <showwelcome><![CDATA[I]]></showwelcome> <showprogress><![CDATA[I]]></showprogress> <questionindex><![CDATA[-1]]></questionindex> <navigationdelay><![CDATA[-1]]></navigationdelay> <nokeyboard><![CDATA[I]]></nokeyboard> <alloweditaftercompletion><![CDATA[I]]></alloweditaftercompletion> <tokenencryptionoptions/> </row> </rows> </surveys> <surveys_languagesettings> <fields> <fieldname>surveyls_survey_id</fieldname> <fieldname>surveyls_language</fieldname> <fieldname>surveyls_title</fieldname> <fieldname>surveyls_description</fieldname> <fieldname>surveyls_welcometext</fieldname> <fieldname>surveyls_endtext</fieldname> <fieldname>surveyls_policy_notice</fieldname> <fieldname>surveyls_policy_error</fieldname> <fieldname>surveyls_policy_notice_label</fieldname> <fieldname>surveyls_url</fieldname> <fieldname>surveyls_urldescription</fieldname> <fieldname>surveyls_email_invite_subj</fieldname> <fieldname>surveyls_email_invite</fieldname> <fieldname>surveyls_email_remind_subj</fieldname> <fieldname>surveyls_email_remind</fieldname> <fieldname>surveyls_email_register_subj</fieldname> <fieldname>surveyls_email_register</fieldname> <fieldname>surveyls_email_confirm_subj</fieldname> <fieldname>surveyls_email_confirm</fieldname> <fieldname>surveyls_dateformat</fieldname> <fieldname>surveyls_attributecaptions</fieldname> <fieldname>surveyls_alias</fieldname> <fieldname>email_admin_notification_subj</fieldname> <fieldname>email_admin_notification</fieldname> <fieldname>email_admin_responses_subj</fieldname> <fieldname>email_admin_responses</fieldname> <fieldname>surveyls_numberformat</fieldname> <fieldname>attachments</fieldname> </fields> <rows> <row> <surveyls_survey_id><![CDATA[528728]]></surveyls_survey_id> <surveyls_language><![CDATA[en]]></surveyls_language> <surveyls_title><![CDATA[test]]></surveyls_title> <surveyls_description/> <surveyls_welcometext/> <surveyls_endtext/> <surveyls_policy_notice/> <surveyls_policy_notice_label/> <surveyls_url/> <surveyls_urldescription/> <surveyls_email_invite_subj><![CDATA[Invitation to participate in a survey]]></surveyls_email_invite_subj> <surveyls_email_invite><![CDATA[Dear {FIRSTNAME},<br /> <br /> You have been invited to participate in a survey.<br /> <br /> The survey is titled:<br /> "{SURVEYNAME}"<br /> <br /> "{SURVEYDESCRIPTION}"<br /> <br /> To participate, please click on the link below.<br /> <br /> Sincerely,<br /> <br /> {ADMINNAME} ({ADMINEMAIL})<br /> <br /> ----------------------------------------------<br /> Click here to do the survey:<br /> {SURVEYURL}<br /> <br /> If you do not want to participate in this survey and don't want to receive any more invitations please click the following link:<br /> {OPTOUTURL}<br /> <br /> If you are blacklisted but want to participate in this survey and want to receive invitations please click the following link:<br /> {OPTINURL}]]></surveyls_email_invite> <surveyls_email_remind_subj><![CDATA[Reminder to participate in a survey]]></surveyls_email_remind_subj> <surveyls_email_remind><![CDATA[Dear {FIRSTNAME},<br /> <br /> Recently we invited you to participate in a survey.<br /> <br /> We note that you have not yet completed the survey, and wish to remind you that the survey is still available should you wish to take part.<br /> <br /> The survey is titled:<br /> "{SURVEYNAME}"<br /> <br /> "{SURVEYDESCRIPTION}"<br /> <br /> To participate, please click on the link below.<br /> <br /> Sincerely,<br /> <br /> {ADMINNAME} ({ADMINEMAIL})<br /> <br /> ----------------------------------------------<br /> Click here to do the survey:<br /> {SURVEYURL}<br /> <br /> If you do not want to participate in this survey and don't want to receive any more invitations please click the following link:<br /> {OPTOUTURL}]]></surveyls_email_remind> <surveyls_email_register_subj><![CDATA[Survey registration confirmation]]></surveyls_email_register_subj> <surveyls_email_register><![CDATA[Dear {FIRSTNAME},<br /> <br /> You, or someone using your email address, have registered to participate in an online survey titled {SURVEYNAME}.<br /> <br /> To complete this survey, click on the following URL:<br /> <br /> {SURVEYURL}<br /> <br /> If you have any questions about this survey, or if you did not register to participate and believe this email is in error, please contact {ADMINNAME} at {ADMINEMAIL}.]]></surveyls_email_register> <surveyls_email_confirm_subj><![CDATA[Confirmation of your participation in our survey]]></surveyls_email_confirm_subj> <surveyls_email_confirm><![CDATA[Dear {FIRSTNAME},<br /> <br /> This email is to confirm that you have completed the survey titled {SURVEYNAME} and your response has been saved. Thank you for participating.<br /> <br /> If you have any further questions about this email, please contact {ADMINNAME} on {ADMINEMAIL}.<br /> <br /> Sincerely,<br /> <br /> {ADMINNAME}]]></surveyls_email_confirm> <surveyls_dateformat><![CDATA[9]]></surveyls_dateformat> <email_admin_notification_subj><![CDATA[Response submission for survey {SURVEYNAME}]]></email_admin_notification_subj> <email_admin_notification><![CDATA[Hello,<br /> <br /> A new response was submitted for your survey '{SURVEYNAME}'.<br /> <br /> Click the following link to see the individual response:<br /> {VIEWRESPONSEURL}<br /> <br /> Click the following link to edit the individual response:<br /> {EDITRESPONSEURL}<br /> <br /> View statistics by clicking here:<br /> {STATISTICSURL}]]></email_admin_notification> <email_admin_responses_subj><![CDATA[Response submission for survey {SURVEYNAME} with results]]></email_admin_responses_subj> <email_admin_responses><![CDATA[Hello,<br /> <br /> A new response was submitted for your survey '{SURVEYNAME}'.<br /> <br /> Click the following link to see the individual response:<br /> {VIEWRESPONSEURL}<br /> <br /> Click the following link to edit the individual response:<br /> {EDITRESPONSEURL}<br /> <br /> View statistics by clicking here:<br /> {STATISTICSURL}<br /> <br /> <br /> The following answers were given by the participant:<br /> {ANSWERTABLE}]]></email_admin_responses> <surveyls_numberformat><![CDATA[0]]></surveyls_numberformat> </row> </rows> </surveys_languagesettings> <themes> <theme> <sid>528728</sid> <template_name>fruity_twentythree</template_name> <config> <options>inherit</options> </config> </theme> </themes> <themes_inherited> <theme> <sid>528728</sid> <template_name>fruity_twentythree</template_name> <config> <options> <hideprivacyinfo>off</hideprivacyinfo> <showpopups>1</showpopups> <showclearall>off</showclearall> <questionhelptextposition>top</questionhelptextposition> <fixnumauto>enable</fixnumauto> <backgroundimage>off</backgroundimage> <backgroundimagefile>./files/pattern.png</backgroundimagefile> <brandlogo>off</brandlogo> <brandlogofile>image::theme::files/logo.png</brandlogofile> <font>ibm-sans</font> <cssframework>Apple</cssframework> </options> </config> </theme> </themes_inherited> </document> |
|
We really need 2 things (in my opinion)
I don't like dynamic save, because sometimes : you can want to cancel your edition |
|
@mafavetti : can you check after https://github.com/LimeSurvey/LimeSurvey/commit/ca7694cfaebeafb3933d2409a8f7f82d3d7fa1af ? |
|
yes, I'll have a look after I get back from vacation on the 15th |
|
Date Modified | Username | Field | Change |
---|---|---|---|
2023-10-28 02:42 | mfavetti | New Issue | |
2023-10-28 02:44 | mfavetti | Note Added: 78112 | |
2023-10-28 02:44 | mfavetti | File Added: limesurvey_survey_528728.lss | |
2023-10-28 02:44 | mfavetti | Bug heat | 0 => 2 |
2023-10-28 10:49 | DenisChenu | Note Added: 78113 | |
2023-10-28 10:49 | DenisChenu | Bug heat | 2 => 4 |
2024-03-12 17:54 | DenisChenu | Note Added: 79780 | |
2024-03-12 19:29 | mfavetti | Note Added: 79783 |