I'm pretty sure you can't do this without Javascript - this code did something similar - for a booking onto an event it would warn the user if they had already booked onto it:
// add booking view 132
// account field 149
// event field 151
$(document).on('knack-view-render.view_132', function (event, view, data) {
$('#' + view.key + '-field_151').chosen().change(function() {
console.log('triggered');
check_duplicate();
});
$('<div class="kn-message error" id="duplicate_alert"></div>')
.insertAfter($('#kn-input-field_151'))
.hide();
function check_duplicate () {
var bookingFilters = [
{
'field':'field_149',
'operator':'is',
'value':$('#'+ view.key + '-field_149').val()
},
{
'field':'field_151',
'operator':'is',
'value':$('#'+ view.key + '-field_151').val()
}
];
Knack.showSpinner();
$.ajax({
url: fullUrl,
async: false,
type: 'GET',
headers: {'X-Knack-Application-Id': '5ac608865b4eec1f69cacbdb', 'X-Knack-REST-API-Key': '16e94820-38c5-11e8-a291-33529755c0c2'}
}).done(function(data) {
// Make sure we have no duplicate records
if (data.records.length !== 0) {
Knack.hideSpinner();
$('#duplicate_alert').html($('<p><strong>You had already booked onto that event - please select another! </p></strong>')).show();
$('#view_132-field_151').val([]).trigger('liszt:updated');
}
else
{
$('#duplicate_alert').hide();
Knack.hideSpinner();
}
}
)}
});
Horrendously complicated for something so simple but I hope it helps nonetheless!