1(function ($, Drupal, drupalSettings, once) { 2 Drupal.behaviors.customKBAValidation = { 3 attach: function (context, settings) { 4 $(once('custom-kba-validation', '.custom-kba-validation', context)).on('input blur', function() { 5 var param = $(this).attr('id'); 6 validateInput.call(this, param); 7 }); 8 } 9 }; 10 11 Drupal.behaviors.customKBAUniqueAnswer = { 12 attach: function (context, settings) { 13 $(once('custom-kba-unique-answer', '.custom-kba-validation', context)).on('blur', function () { 14 var textfield1 = $('#kba-answer-1').val(); 15 var textfield2 = $('#kba-answer-2').val(); 16 var textfield3 = $('#kba-answer-3').val(); 17 var kba_answer_length = drupalSettings.miniorange_2fa.kba_answer_length; 18 var inputValue = $(this).val().trim(); 19 var pattern = /^[\w\s]+$/; 20 var isValid = pattern.test(inputValue); 21 var message = 'Answers must be unique.'; 22 23 if(isValid && inputValue.length >= kba_answer_length) { 24 if (textfield1 === textfield2 && textfield1 === textfield3 && textfield2 === textfield3) { 25 $('#kba-answer-2')[0].setCustomValidity(Drupal.t(message)); 26 } else if (textfield1 === textfield2) { 27 $('#kba-answer-2')[0].setCustomValidity(Drupal.t(message)); 28 } else if (textfield2 === textfield3) { 29 $('#kba-answer-3')[0].setCustomValidity(Drupal.t(message)); 30 } else if (textfield1 === textfield3) { 31 $('#kba-answer-3')[0].setCustomValidity(Drupal.t(message)); 32 } else { 33 $('#kba-answer-1')[0].setCustomValidity('') 34 $('#kba-answer-2')[0].setCustomValidity('') 35 $('#kba-answer-3')[0].setCustomValidity('') 36 } 37 } 38 }); 39 }}; 40 41 function validateInput(textfield){ 42 var kba_answer_length = drupalSettings.miniorange_2fa.kba_answer_length; 43 var answer_textfield = $('#' + textfield)[0]; 44 var inputValue = $('#' + textfield).val().trim(); 45 var pattern = /^[\w\s]+$/ 46 47 if(inputValue.length >= 1){ 48 if (inputValue.length < kba_answer_length) { 49 if(!pattern.test(inputValue)) { 50 answer_textfield.setCustomValidity(Drupal.t('Only alphanumeric characters are allowed.')); 51 } else { 52 answer_textfield.setCustomValidity(Drupal.t('Answers must contain at least @length characters.', {'@length' : kba_answer_length})); 53 } 54 } else if (!pattern.test(inputValue)) { 55 answer_textfield.setCustomValidity(Drupal.t('Only alphanumeric characters are allowed.')); 56 } else { 57 answer_textfield.setCustomValidity(''); 58 } 59 } 60 } 61})(jQuery, Drupal, drupalSettings, once);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.