1 /* JS form validation for holds page alert methods */
2 function resetBackgrounds(names){
3 for (var key in names) {
4 if (names.hasOwnProperty(key)) {
5 var l = document.getElementsByName(names[key]);
7 l[0].style.backgroundColor = "";
13 function validateMethodSelections (alertMethodCboxes) {
14 var needsPhone = false;
17 var needsEmail = false;
22 var inputNames = { e: "email_address", ph: "phone_notify", sms: "sms_notify", carrier: "sms_carrier"};
23 resetBackgrounds(inputNames);
25 //Array.from(alertMethodCboxes).forEach(function(cbox){
26 for (var i = 0; i < alertMethodCboxes.length; i++){
27 var cbox = alertMethodCboxes[i];
28 if (cbox.checked && !cbox.disabled) {
30 case "email_notify_checkbox":
32 hasEmail = document.getElementsByName(inputNames.e)[0].innerHTML !== "";
34 case "phone_notify_checkbox":
36 hasPhone = document.getElementsByName(inputNames.ph)[0].value !== "";
38 case "sms_notify_checkbox":
40 var smsNumInput = document.getElementsByName(inputNames.sms)[0];
41 hasSms = document.getElementsByName(inputNames.carrier)[0].value !== "" && smsNumInput.value !== ""; // todo: properly validate phone nums
48 var emailOK = (needsEmail && hasEmail) || (!needsEmail);
49 var phoneOK = needsPhone && hasPhone || (!needsPhone);
50 var smsOK = needsSms && hasSms || (!needsSms);
53 culprits.push("phone_notify");
56 culprits.push("sms_notify", "sms_carrier");
59 var isFormOK = emailOK && phoneOK && smsOK;
60 return { isValid: isFormOK, culpritNames : culprits };
63 function validateHoldForm() {
64 var res = validateMethodSelections(document.getElementsByClassName("hold-alert-method"));
69 alert(eg_opac_i18n.EG_MISSING_REQUIRED_INPUT);
70 res.culpritNames.forEach(function(n){
71 document.getElementsByName(n)[0].style.backgroundColor = "yellow";