fix: hide free text fields by default

Script was missing from Organisation and Relationship forms

Resolves #114
This commit is contained in:
James Graham
2021-05-09 15:17:11 +01:00
parent 7f01bff993
commit e7542e70a5
4 changed files with 46 additions and 38 deletions

View File

@@ -0,0 +1,36 @@
function hasOption(select, option) {
var exists = false;
for (var i = 0; i < select.options.length; i++) {
if (select.options[i].text.toLowerCase().startsWith(option)) return true;
}
return false;
}
function setFreeTextState(select, freeTextField) {
var other_selected = false;
for (var i = 0; i < select.selectedOptions.length; i++) {
if (select.selectedOptions[i].text.toLowerCase().startsWith('other')) {
other_selected = true;
}
}
if (other_selected) {
freeTextField.show();
} else {
freeTextField.hide();
}
}
$(document).ready(function () {
$('select').each(function (index, element) {
if (hasOption(element, 'other')) {
var freeTextField = $('#' + element.id + '_free').parent();
setFreeTextState(element, freeTextField);
$('#' + element.id).on('change', function (event) {
setFreeTextState(event.target, freeTextField);
});
}
})
});

View File

@@ -51,3 +51,7 @@
<hr>
{% endblock %}
{% block extra_script %}
<script async defer src="{% static 'js/hide_free_text.js' %}"></script>
{% endblock %}

View File

@@ -51,42 +51,5 @@
{% endblock %}
{% block extra_script %}
<script>
function hasOption(select, option) {
var exists = false;
for (var i = 0; i < select.options.length; i++) {
if (select.options[i].text.toLowerCase().startsWith(option)) return true;
}
return false;
}
function setFreeTextState(select, freeTextField) {
var other_selected = false;
for (var i = 0; i < select.selectedOptions.length; i++) {
if (select.selectedOptions[i].text.toLowerCase().startsWith('other')) {
other_selected = true;
}
}
if (other_selected) {
freeTextField.show();
} else {
freeTextField.hide();
}
}
$(document).ready(function(){
$('select').each(function(index, element) {
if (hasOption(element, 'other')) {
var freeTextField = $('#' + element.id + '_free').parent();
setFreeTextState(element, freeTextField);
$('#' + element.id).on('change', function(event) {
setFreeTextState(event.target, freeTextField);
});
}
})
});
</script>
<script async defer src="{% static 'js/hide_free_text.js' %}"></script>
{% endblock %}

View File

@@ -33,3 +33,8 @@
</form>
{% endblock %}
{% block extra_script %}
{% load staticfiles %}
<script async defer src="{% static 'js/hide_free_text.js' %}"></script>
{% endblock %}