Writing code that is reusable is an important part of software development. In a way, we're not simply solving the problem at hand, but we're building tools we can use to solve similar problems in the future. Now, that's also a risk: premature abstraction is its own source of WTFs.
Daniel's peer wrote some JavaScript which is used for manipulating form inputs on customer contact forms. You know the sorts of forms: give us your full name, phone number, company name, email, and someone from our team will be in touch. This developer wrote the script, and offered it to clients to enhance their forms. Well, there was one problem: this script would get embedded in customer contact forms, but not all customer contact forms use the same conventions for how they name their fields.
There's an easy solution for that, involving parameterizing the code or adding a configuration step. There's a hard solution, where you build a heuristic that works for most forms. Then there's this solution, which… well…. Let me present the logic for handling just one field type, unredacted or elided.
for(llelementlooper=0; llelementlooper<document.forms[llformlooper2].elements.length; llelementlooper++)
{
var llelementphone = (document.forms[llformlooper2].elements[llelementlooper].name)
if ( llformphone == '' && ((llelementphone=='phone')
|| (llelementphone=='Phone')
|| (llelementphone=='phone')
|| (llelementphone=='mobilephone')
|| (llelementphone=='PHONE')
|| (llelementphone=='sPhone')
|| (llelementphone=='strPhone')
|| (llelementphone=='Telephone')
|| (llelementphone=='telephone')
|| (llelementphone=='tel')
|| (llelementphone=='si_contact_ex_field6')
|| (llelementphone=='phonenumber')
|| (llelementphone=='phone_number')
|| (llelementphone=='phoneTextBox')
|| (llelementphone=='PhoneNumber_num_25_1')
|| (llelementphone=='Telefone')
|| (llelementphone=='Contact Phone')
|| (llelementphone=='submitted[row_3][phone]')
|| (llelementphone=='edit-profile-phone')
|| (llelementphone=='contactTelephone')
|| (llelementphone=='f4')
|| (llelementphone=='Contact-Phone')
|| (llelementphone=='formItem_239')
|| (llelementphone=='phone_r')
|| (llelementphone=='PhoneNo')
|| (llelementphone=='LeadGen_ContactForm_98494_m0:Phone')
|| (llelementphone=='telefono')
|| (llelementphone=='ntelephone')
|| (llelementphone=='wtelephone')
|| (llelementphone=='watelephone')
|| (llelementphone=='form[telefoon]')
|| (llelementphone=='phone_work')
|| (llelementphone=='telephone-number')
|| (llelementphone=='ctl00$HeaderText$ctl00$PhoneText')
|| (llelementphone=='ctl00$ctl00$cphMain$cphInsideMain$widget1$ctl00$viewBiz$ctl00$phone$textbox')
|| (llelementphone=='ctl00$ctl00$ContentPlaceHolderBase$ContentPlaceHolderSideMenu$TextBoxPhone')
|| (llelementphone=='ctl00$SPWebPartManager1$g_c8bd31c3_e338_41df_bdbe_021242ca01c8$ctl01$ctl06$txtTextbox')
|| (llelementphone=='ctl00$ctl00$ctl00$ContentPlaceHolderDefault$MasterContentPlaceHolder$txtPhone')
|| (llelementphone=='curftelephone')
|| (llelementphone=='form[Telephone]')
|| (llelementphone=='tx_pilmailform_pi1[text][phone]')
|| (llelementphone=='ctl00$ctl00$templateMainContent$homeBanners$HomeBannerList$ctrLeads$txt_5_1')
|| (llelementphone=='ac_daytimeNumber')
|| (llelementphone=='daytime_phone')
|| (llelementphone=='r4')
|| (llelementphone=='ctl00$ContentPlaceHolderBody$Phone')
|| (llelementphone=='Fld10_label')
|| (llelementphone=='field333')
|| (llelementphone=='txtMobile')
|| (llelementphone=='form_nominator_phonenumber')
|| (llelementphone=='submitted[phone_no]')
|| (llelementphone=='submitted[phone]')
|| (llelementphone=='submitted[5]')
|| (llelementphone=='submitted[telephone_no]')
|| (llelementphone=='fields[Contact Phone]')
|| (llelementphone=='cf2_field_5')
|| (llelementphone=='a23786')
|| (llelementphone=='rpr_phone')
|| (llelementphone=='phone-number')
|| (llelementphone=='txt_homePhone')
|| (llelementphone=='your-number')
|| (llelementphone=='Contact_Phone')
|| (llelementphone=='ctl00$CPH_body$txtContactnumber')
|| (llelementphone=='profile_telephone')
|| (llelementphone=='item_meta[90]' && llfrmid==11823)
|| (llelementphone=='item_meta[181]' && llfrmid==26416)
|| (llelementphone=='input_4' && llfrmid==21452)
|| (llelementphone=='EditableTextField100' && llfrmid==13948)
|| (llelementphone=='EditableTextField205' && llfrmid==13948)
|| (llelementphone=='EditableTextField100' && llfrmid==13948)
|| (llelementphone=='EditableTextField166' && llfrmid==13948)
|| (llelementphone=='EditableTextField104' && llfrmid==13948)
|| (llelementphone=='cf2_field_4' && llfrmid==23878)
|| (llelementphone=='input_4' && llfrmid==24017)
|| (llelementphone=='cf_field_4' && llfrmid==15876)
|| (llelementphone=='cf5_field_5' && llfrmid==15876)
|| (llelementphone=='input_9' && llfrmid==17254)
|| (llelementphone=='input_2' && llfrmid==22954)
|| (llelementphone=='input_8' && llfrmid==23756)
|| (llelementphone=='input_3' && llfrmid==18793)
|| (llelementphone=='input_6' && llfrmid==24811)
|| (llelementphone=='input_3' && llfrmid==19880)
|| (llelementphone=='input_6' && llfrmid==19230)
|| (llelementphone=='input_3' && llfrmid==24747)
|| (llelementphone=='input_4' && llfrmid==25897)
|| (llelementphone=='text-481' && llfrmid==14451)
|| (llelementphone=='Form7111$formField_7576')
|| (llelementphone=='Form7168$formField_7673')
|| (llelementphone=='Form7116$formField_7592')
|| (llelementphone=='Form7150$formField_7645')
|| (llelementphone=='Form7153$formField_7655')
|| (llelementphone=='Form7119$formField_7600')
|| (llelementphone=='Form7123$formField_7608')
|| (llelementphone=='Form7161$formField_7665')
|| (llelementphone=='Form7176$formField_7690')
|| (llelementphone=='Form7172$formField_7681')
|| (llelementphone=='Form7113$formField_7584')
|| (llelementphone=='Form7106$formField_7568')
|| (llelementphone=='Form7111$formField_7576')
|| (llelementphone=='Form7136$formField_7628')
|| (llelementphone=='Form6482$formField_7621')
|| (llelementphone=='Form6548$formField_6988')
|| (llelementphone=='submitted[business_phone]')
|| (llelementphone=='tfa_3' && llfrmid==23388)
|| (llelementphone=='ContentObjectAttribute_ezsurvey_answer_4455_3633')
|| (llelementphone=='838ae21c-1f95-488f-a511-135a588a50fb_Phone')
|| (llelementphone=='plc$lt$zoneContent$pageplaceholder$pageplaceholder$lt$zoneRightContent$contentText$BizFormControl1$Bizform1$ctl00$Telephone$txt1st')
|| (llelementphone=='plc$lt$zoneContent$pageplaceholder$pageplaceholder$lt$zoneRightContent$contentText$BizFormControl1$Bizform1$ctl00$Telephone')
|| (llelementphone=='ctl00$ctl00$ctl00$ContentPlaceHolderDefault$ContentAreaPlaceholderMain$ctl02$ContactForm_3$TextBoxTelephone')
|| (llelementphone=='plc$lt$Content2$pageplaceholder1$pageplaceholder1$lt$Content$BizForm$viewBiz$ctl00$Phone_Number')
|| (llelementphone=='ctl00$ctl00$ContentPlaceHolder1$cphMainContent$C002$tbTelephone')
|| (llelementphone=='contact$tbPhoneNumber')
|| (llelementphone=='crMain$ctl00$txtPhone')
|| (llelementphone=='ctl00$PrimaryContent$tbPhone')
|| (llelementphone=='ff_nm_phone[]')
|| (llelementphone=='q5_phoneNumber5[phone]')
|| (llelementphone=='TechContactPhone')
|| (llelementphone=='referral_phone_number')
|| (llelementphone=='field8418998')
|| (llelementphone=='ctl00$Content$ctl00$txtPhone')
|| (llelementphone=='ctl00$PlaceHolderMain$ucContactUs$txtPhone')
|| (llelementphone=='m_field_id_4' && llfrmid==15091)
|| (llelementphone=='Field7' && llfrmid==23387)
|| (llelementphone=='input_4' && llfrmid==22578)
|| (llelementphone=='input_2' && llfrmid==11241)
|| (llelementphone=='input_7' && llfrmid==23633)
|| (llelementphone=='input_7' && llfrmid==22114)
|| (llelementphone=='input_4' && (llformalyzerURL.indexOf('demo') != -1) && llfrmid==17544)
|| (llelementphone=='input_4' && (llformalyzerURL.indexOf('contact') != -1) && llfrmid==17544)
|| (llelementphone=='field_4' && llfrmid==24654)
|| (llelementphone=='input_6' && llfrmid==24782)
|| (llelementphone=='input_4' && (llformalyzerURL.indexOf('contact-us') != -1) && llfrmid==16794)
|| (llelementphone=='input_3' && (llformalyzerURL.indexOf('try-and-buy') != -1) && llfrmid==16794)
|| (llelementphone=='input_4' && (llformalyzerURL.indexOf('contact-us') != -1) && llfrmid==23842)
|| (llelementphone=='input_4' && llfrmid==25451)
|| (llelementphone=='input_5' && llfrmid==24911)
|| (llelementphone=='input_3' && llfrmid==13417)
|| (llelementphone=='input_4' && llfrmid==23813)
|| (llelementphone=='input_4' && llfrmid==21483)
|| (llelementphone=='input_3' && llfrmid==25396)
|| (llelementphone=='input_3' && llfrmid==16175)
|| (llelementphone=='input_7' && llfrmid==25797)
|| (llelementphone=='input_4' && llfrmid==15650)
|| (llelementphone=='input_3' && llfrmid==22025)
|| (llelementphone=='input_3' && llfrmid==14534)
|| (llelementphone=='input_4' && llfrmid==25216)
|| (llelementphone=='input_5' && llfrmid==22884)
|| (llelementphone=='input_6' && llfrmid==25783)
|| (llelementphone=='text-747' && llfrmid==16324)
|| (llelementphone=='vfb-42' && llfrmid==24468)
|| (llelementphone=='vfb-33' && llfrmid==24468)
|| (llelementphone=='item_meta[57]' && llfrmid==25268)
|| (llelementphone=='item_meta[78]' && llfrmid==25268)
|| (llelementphone=='item_meta[85]' && llfrmid==25268)
|| (llelementphone=='item_meta[154]' && llfrmid==25268)
|| (llelementphone=='item_meta[220]' && llfrmid==25268)
|| (llelementphone=='item_meta[240]' && llfrmid==25268)
|| (llelementphone=='item_meta[286]' && llfrmid==25268)
|| (llelementphone=='fieldname5' && llfrmid==12535)
|| (llelementphone=='Question12' && llfrmid==24639)
|| (llelementphone=='ninja_forms_field_4' && llfrmid==19321)
|| (llelementphone=='EditableTextField' && llfrmid==15064)
|| (llelementphone=='form_fields[27]' && llfrmid==22688)
|| (llelementphone=='ctl00$body$phone')
|| (llelementphone=='ctl00$MainContent$txtPhone')
|| (llelementphone=='FreeTrialForm$Phone')
|| (llelementphone=='text-521ada035aa46')
|| (llelementphone=='C_BusPhone')
|| (llelementphone=='ctl00$ctl00$templateMainContent$pageContent$ctrLeads$txt_5_1')
|| (llelementphone=='ctl00$Modules$ctl00$rptFields$ctl06$1204')
|| (llelementphone=='ctl00$Modules$ctl00$rptFields$ctl06$1320')
|| (llelementphone=='ctl00$Modules$ctl00$rptFields$ctl07$1242')
|| (llelementphone=='ctl00$Modules$ctl00$rptFields$ctl07$1202')
|| (llelementphone=='ctl00$Modules$ctl00$rptFields$ctl08$1242')
|| (llelementphone=='ctl00$MainColumnPlaceHolder$uxPhone')
|| (llelementphone=='ctl00$MainContent$DropZoneTop$columnDisplay$ctl04$controlcolumn$ctl00$WidgetHost$WidgetHost_widget$IDPhone')
|| (llelementphone=='ctl00$ctl05$txtPhone')
|| (llelementphone=='ctl00$Modules$ctl00$rptFields$ctl07$1219')
|| (llelementphone=='LeadGen_ContactForm_33872_m419365:Phone')
|| (llelementphone=='F02220803')
|| (llelementphone=='h2c0f')
|| (llelementphone=='your_phone_number')
|| (llelementphone=='Question7')
|| (llelementphone=='Question51')
|| (llelementphone=='Question59')
|| (llelementphone=='Question35')
|| (llelementphone=='Question67')
|| (llelementphone=='field9740823')
|| (llelementphone=='message[phone]')
|| (llelementphone=='dnn$ctr1266$ViewKamakuraRegister$Phone')
|| (llelementphone=='phone1')
|| (llelementphone=='inf_field_Phone1')
|| (llelementphone=='hscontact_phone')
|| (llelementphone=='data[Contact][phone]')
|| (llelementphone=='fields[Phone]')
|| (llelementphone=='contact[PhoneNumber]')
|| (llelementphone=='phonename3')
|| (llelementphone=='UserPhone')
|| (llelementphone=='ctl00$MainBody$txtPhoneTech')
|| (llelementphone=='Telephone1')
|| (llelementphone=='PhoneNumber')
|| (llelementphone=='work_phone')
|| (llelementphone=='jform[contact_telephone]')
|| (llelementphone=='form[phone]')
|| (llelementphone=='RequestAQuote1$txtPhone')
|| (llelementphone=='06_Phone')
|| (llelementphone=='txtPhone')
|| (llelementphone=='field_location[und][0][phone]')
|| (llelementphone=='your-phone')
|| (llelementphone=='cmsForms_phone')
|| (llelementphone=='Txt_phonenumber')
|| (llelementphone=='businessPhone')
|| (llelementphone=='boxHomePhone')
|| (llelementphone=='HomePhone')
|| (llelementphone=='request-phone')
|| (llelementphone=='user[phone]')
|| (llelementphone=='DATA[PHONE]')
|| (llelementphone=='ctl00$ctl00$ctl00$cphContent$cphContent$cphContent$Phone')
|| (llelementphone=='ctl00$MainBody$Form1$obj11')
|| (llelementphone=='LeadGen_ContactForm_90888_m1467651:Phone')
|| (llelementphone=='Users[work]')
|| (llelementphone=='Question43')
|| (llelementphone=='aics_phone')
|| (llelementphone=='form[workphone]')
|| (llelementphone=='ctl00$ctl00$ContentPlaceHolder1$cphMainContent$C006$tbTelephone')
|| (llelementphone=='cntnt01fbrp__47')
|| (llelementphone=='submitted[phone_number]')
|| (llelementphone=='flipform_phone')
|| (llelementphone=='txtPhone')
|| (llelementphone=='ctl00$ContentPlaceHolder2$txtPhnno')
|| (llelementphone=='ctl00$ctl00$ContentPlaceHolder1$ContentPlaceHolder1$mainContentRegion$BizFormControl1$Bizform1$ctl00$Phone')
|| (llelementphone=='inpPhone')
|| (llelementphone=='j_phone')
|| (llelementphone=='m6e81afbrp__53')
|| (llelementphone=='item_meta[119]')
|| (llelementphone=='ctl00$ContentPlaceHolder_Content$dataPhone')
|| (llelementphone=='ctl00$generalContentPlaceHolder$ctrlContactUs$tbPhone')
|| (llelementphone=='ctl00$ctl00$ctl00$ContentPlaceHolderDefault$ContentPlaceHolder1$Contact_6$txtPhone')
|| (llelementphone=='ctl00$MainContent$tel')
|| (llelementphone=='dynform_element_3')
|| (llelementphone=='telephone_1')
|| (llelementphone=='cf_phone')
|| (llelementphone=='Lead_PrimaryPhone')
|| (llelementphone=='p_lt_zoneContent_wP_wP_lt_zonePageWidgets_RevolabsMicrosoftDynamicsCRMContactForm_1_txtBusinessPhone')
|| (llelementphone=='si_contact_ex_field2')
|| (llelementphone=='dnn$ctr458$XModPro$ctl00$ctl00$ctl00$Telephone')
|| (llelementphone=='ctl00$ctl06$txtTelephone')
|| (llelementphone=='dnn$ctr458$XModPro$ctl00$ctl00$ctl00$Telephone')
|| (llelementphone=='ctl00$ctl00$mainCopy$CPHCenter$ctl00$QuickRegControl_2$TBPhone')
|| (llelementphone=='LeadGen_ContactForm_38163_m457931:Phone')
|| (llelementphone=='LeadGen_ContactForm_29909_m371524:Phone')
|| (llelementphone=='LeadGen_ContactForm_32343_m395611:Phone')
|| (llelementphone=='LeadGen_ContactForm_31530_m388101:Phone')
|| (llelementphone=='LeadGen_ContactForm_27072_m349818:Phone')
|| (llelementphone=='LeadGen_ContactForm_28362_m354522:Phone')
|| (llelementphone=='LeadGen_ContactForm_28759_m358745:Phone')
|| (llelementphone=='LeadGen_ContactForm_32343_m395611:Phone')
|| (llelementphone=='LeadGen_ContactForm_33631_m415978:Phone')
|| (llelementphone=='LeadGen_ContactForm_30695_m380436:Phone')
|| (llelementphone=='LeadGen_ContactForm_29958_m372138:Phone')
|| (llelementphone=='LeadGen_ContactForm_31471_m387422:Phone')
|| (llelementphone=='LeadGen_ContactForm_32514_m397613:Phone')
|| (llelementphone=='LeadGen_ContactForm_29152_m362772:Phone')
|| (llelementphone=='LeadGen_ContactForm_32540_m397908:Phone')
|| (llelementphone=='pNumber')
|| (llelementphone=='organizer_phone')
|| (llelementphone=='ctl00$PlaceHolderMain$TrialDownloadForm$Phone')
|| (llelementphone=='ContactSubmission.Phone.Value')
|| (llelementphone=='ctl00$body$txtPhone')
|| (llelementphone=='p$lt$ctl03$pageplaceholder$p$lt$zoneCentre$editabletext$ucEditableText$widget1$ctl00$viewBiz$ctl00$Telephone$textbox')
|| (llelementphone=='ctl01_ctl00_pbForm1_ctl_phone_61f3')
|| (llelementphone=='ctl01$ctl00$ContentPlaceHolder1$ctl15$Phone')
|| (llelementphone=='p$lt$zoneContent$pageplaceholder$p$lt$zoneRightContent$contentText$ucEditableText$BizFormControl1$Bizform1$ctl00$Telephone$textbox')
|| (llelementphone=='ctl00$ctl00$ContentPlaceHolder$ContentPlaceHolder$ctl00$fPhone')
|| (llelementphone=='pagecolumns_0$form_B502CC1EC1644B38B722523526D45F36$field_6BCFC01A782747DF8E785B5533850EEB')
|| (llelementphone=='cf3_field_10')
|| (llelementphone=='r_phone')
|| (llelementphone=='c_phone')
|| (llelementphone=='cf-1[]')
|| (llelementphone=='frm_phone')
|| (llelementphone=='Patient_Phone_Number')
|| (llelementphone=='ctl00$PageContent$ctl00$txtPhone')
|| (llelementphone=='dnn$ctr398$FormMaster$ctl_6e49bedd138a4684a66b62dcb1a34658')
|| (llelementphone=='id_tel')
|| (llelementphone=='field_contact_tel[und][0][value]')
|| (llelementphone=='Phone:')
|| (llelementphone=='ContactPhone')
|| (llelementphone=='submitted[telephone]')
|| (llelementphone=='ctl00$ContentPlaceHolder1$ctl04$txtPhone')
|| (llelementphone=='ctl00$ContentPlaceHolder_pageContent$contact_phone')
|| (llelementphone=='264')
|| (llelementphone=='form_phone_number')
|| (llelementphone=='field8418998')
|| (llelementphone=='phoneTBox')
|| (llelementphone=='pagecontent_1$content_0$contentbottom_0$txtPhone')
|| (llelementphone=='application_0$PhoneTextBox')
|| (llelementphone=='submitted[phone_work]')
|| (llelementphone=='data[Lead][phone]')
|| (llelementphone=='a4475-telephone')
|| (llelementphone=='ctl00$Form$txtPhoneNumber')
|| (llelementphone=='signup_form_data[Phone]')
|| (llelementphone=='WorkPhone')
|| (llelementphone=='lldPhone')
|| (llelementphone=='web_form_1[field_102]value')
|| (llelementphone=='LeadGen_ContactForm_114694_m1832700:Phone')
|| (llelementphone=='phoneSalesForm')
|| (llelementphone=='fund_phone')
|| (llelementphone=='Phonepi_Phone')
|| (llelementphone=='field343')
|| (llelementphone=='cntnt01fbrp__48')
|| (llelementphone=='contact[phone]')
|| (llelementphone=='ctl00_ContentPlaceHolder1_ctl01_contactTelephoneBox_text')
|| (llelementphone=='ctl01$ctl00$ContentPlaceHolder1$ctl29$Phone')
|| (llelementphone=='plc$lt$content$pageplaceholder$pageplaceholder$lt$bodyColumnZone$LogilityContactUs$txtWorkPhone')
|| (llelementphone=='ctl00$ctl00$ctl00$cphBody$cphMain$cphMain$FormBuilder1$FormBuilderListView$ctrl4$FieldControl_Telephone')
|| (llelementphone=='ctl00$ctl00$ctl00$ContentPlaceHolderDefault$cp_content$ctl02$RenderForm_1$rpFieldsets$ctl00$rpFields$ctl04$126d33a3_9f7f_4583_8c94_5820d58fc030')
|| (llelementphone=='tx_powermail_pi1[uid1266]')
|| (llelementphone=='si_contact_ex_field3')
|| (llelementphone=='inc_contact1$txtPhone')
|| (llelementphone=='item2_tel_1')
|| (llelementphone=='LeadGen_ContactForm_15766_m0:Phone')
|| (llelementphone=='ctl00$ContentPlaceHolder1$txtPhone')
|| (llelementphone=='Default$Content$FormViewer$FieldsRepeater$ctl04$ctl00$ViewTextBox')
|| (llelementphone=='Default$Content$FormViewer$FieldsRepeater$ctl04$ctl00$ViewTextBox')
|| (llelementphone=='ctl00$SecondaryPageContent$C005$ctl00$ctl00$C002$ctl00$ctl00$textBox_write')
|| (llelementphone=='_u216318653597056311')
|| (llelementphone=='_u630018292785751084')
|| (llelementphone=='data[Contact][office_phone]')
|| (llelementphone=='ctl00$ctl00$cphMainContent$Content$txtPhone')
|| (llelementphone=='ctl00$ContentPlaceHolder1$txtTel')
|| (llelementphone=='item_5')
|| (llelementphone=='ques_21432')
|| (llelementphone=='phoneNum')
|| (llelementphone=='CONTACT_PHONE')
|| (llelementphone=='ff_nm_cf_phonetext[]')
|| (llelementphone=='WorkPhone')
) )
{
llformphone = (document.forms[llformlooper2].elements[llelementlooper].value);
if (llfrmid == debugid ) {alert('llformphone:'+llformphone+' llemailfound:'+llemailfound);}
}
If the name
property of the form element is equal to any one of the many many many items in this list, we can then extract the value
and stuff it into a variable. And, since this will almost certainly break all the time, it's got a convenient "set the debugid
and I'll spam alerts as I search the form".
Repeat this for every other field. It ends up being almost 2,000 lines of code, just to select the correct fields out of the forms.