#1 by Roger97
Hey! I'm new in otree, I'm trying to include in my app a Prolific page in which I ask the participants to write their prolific ID. Since it is a 24-character code, I want to have an error message if the length of the string is less than 24 characters. I tried to do like this but it does not work... class Player(BasePlayer): prolific_ID = models.StringField(label="Please enter your Prolific ID:", max_length=24) # FUNCTIONS def validate(self): if len(self.prolific_ID) < 24: return 'your Prolific ID must be 24 characters long.' ********************************************************************************************************** This is the html {{ block content }} {{ formfields }} <p align="right"> <button class="otree-btn-next btn btn-primary">NEXT</button> </p> {{ endblock }} ************************************************************************************************************* thank you in advance!
#2 by Fanist
see this code for a reference {{ block title }}<center><p>Welcome</p></center>{{ endblock }} {{ block content }} <center> {{ formfields }} </center> <center> <button type="button" class="btn btn-primary" onclick="checkSubmit()">Next</button> </center> <!--The code below prevents participants from submitting their Prolific ID va the Enter button.--> <script type="text/javascript"> window.addEventListener('keydown',function(e){if(e.keyIdentifier=='U+000A'||e.keyIdentifier=='Enter'||e.keyCode==13){if(e.target.nodeName=='INPUT'&&e.target.type=='text'){e.preventDefault();return false;}}},true); </script> <script> function checkSubmit() { let form = document.getElementById('form'); let isValid = form.reportValidity(); if (!isValid) return; let warnings = []; let prolific_id = forminputs.prolific_id.value; // Warn of Prolific ID is too short if (prolific_id.length < 10) { warnings.push("Are you sure about your id?") } // Press OK to proceed anyway if (warnings.length > 0) { warnings.push("Press OK to proceed anyway.") let confirmed = window.confirm(warnings.join('\r\n')); if (!confirmed) return; } form.submit(); } </script> {{ endblock }}