PageSourceSearch

https://m.flsenate.gov/Scripts/jquery.unobtrusive.custom.mobile-only.js

js flsenate.gov collected 2026-09-24 08:30:23 UTC 6,857 bytes, 208 lines download raw bytes

1/*
2** Unobtrusive custom validation code using jQuery Validate, tailored for Mobile site ONLY
3** mobile needs these hacks because the css should be on the part div.input-wrap not on the input text
4*/
5
6$.validator.addMethod("atLeastOneValidate", atLeastOneValidation, "Please enter at least one field.");
7function atLeastOneValidation(value, element) {
8    var prop = $(element).attr('data-val-atleastonerequired-properties');
9    var array = new Array();
10    array = prop.split(',');
11    if (array.length > 0) {
12        for (i in array) {
13            var input = '#' + array[i];
14            var val = $(input).val();
15            if (val != '') {
16                return true;
17            }
18        }
19    }
20    else {
21        return true;
22    }
23    return false;
24}
25
26$.validator.addMethod("addressValidate", addressValidation, "Both address and city fields are required.");
27function addressValidation(value, element) {
28    if ($('#Zip').val() == '') {
29        var addressVal = $('#Address').val();
30
31        if (addressVal != '' || cityVal != '') {
32            if (value == '') {
33                return false;
34            }
35        }
36    }
37    return true;
38}
39
40///////////////////////////////////////////////////////////////////////////
41//Because Homepage form is so long have to add Jquery Plug-in Validation so that the form will stay in place on error
42
43//Adding jq validation plugin to form /Home/Bill
44$('#BillFrm').validate({
45    rules: {
46        BillNumber: {
47            required: true
48        }
49    },
50    messages: {
51        BillNumber: {
52            required: "Bill # is required."
53        }
54    },
55    errorElement: "span",
56    errorClass: "field-validation-error",
57    errorPlacement: function (error, element) {
58        error.insertBefore('#BillFrm-Help');
59    },
60    highlight: function (element) {
61        $(element).addClass("validation-error").parent('.input-wrap').addClass("validation-error").addClass('validation-error-border');
62    },
63    unhighlight: function (element) {
64        $(element).removeClass('validation-error').parent('.input-wrap').removeClass('validation-error').removeClass('validation-error-border');
65    },
66    focusInvalid: false,
67    onkeyup: false,
68    onfocusout: false
69});
70
71//Adding jq validation plugin to form /Home/Bills
72$('#BillTermFrm').validate({
73    rules: {
74        SearchQuery: {
75            required: true
76        }
77    },
78    messages: {
79        SearchQuery: {
80            required: "Search Term is required."
81        }
82    },
83    errorElement: "span",
84    errorClass: "field-validation-error",
85    errorPlacement: function (error, element) {
86        error.insertBefore('#BillTermFrm-Help');
87    },
88    highlight: function (element) {
89        $(element).addClass("validation-error").parent('.input-wrap').addClass("validation-error").addClass('validation-error-border');
90    },
91    unhighlight: function (element) {
92        $(element).removeClass('validation-error').parent('.input-wrap').removeClass('validation-error').removeClass('validation-error-border');
93    },
94    focusInvalid: false,
95    onkeyup: false,
96    onfocusout: false
97});
98
99//Adding jq validation plugin to form /Home/Statutes
100$('#StatuteFrm').validate({
101    rules: {
102        StatuteSearchQuery: {
103            atLeastOneValidate: true,
104        },
105        GoToChapter: {
106            atLeastOneValidate: true
107        }
108    },
109    messages: {
110        StatuteSearchQuery: {
111            atLeastOneValidate: "",
112        }
113    },
114    errorElement: "span",
115    errorClass: "field-validation-error",
116    errorPlacement: function (error, element) {
117        error.insertBefore('#StatuteFrm-Help');
118    },
119    highlight: function (element) {
120        $(element).addClass("validation-error").parent('.input-wrap').addClass("validation-error").addClass('validation-error-border');
121    },
122    unhighlight: function (element) {
123        $(element).removeClass('validation-error').parent('.input-wrap').removeClass('validation-error').removeClass('validation-error-border');
124    },
125    focusInvalid: false,
126    onkeyup: false,
127    onfocusout: false
128});
129
130//Adding jq validation plugin to form /Home/SenatorsByAddress
131$('#AddressLeg').validate({
132    rules: {
133        Address: {
134            addressValidate: true
135        },
136    },
137    messages: {
138        Address: {
139            atLeastOneValidate: "",
140            addressValidate: "Address is required."
141        },
142    },
143    errorElement: "span",
144    errorClass: "field-validation-error",
145    errorPlacement: function (error, element) {
146        error.insertBefore('#AddressLeg-Help');
147    },
148    highlight: function (element) {
149        $(element).addClass("validation-error").parent('.input-wrap').addClass("validation-error").addClass('validation-error-border');
150    },
151    unhighlight: function (element) {
152        $(element).removeClass('validation-error').parent('.input-wrap').removeClass('validation-error').removeClass('validation-error-border');
153    },
154    focusInvalid: false,
155    onkeyup: false,
156    onfocusout: false
157});
158
159//Adding jq validation plugin to form /Home/SenatorsByName
160$('#NameLeg').validate({
161    rules: {
162        Senator: {
163            required: true
164        }
165    },
166    messages: {
167        Senator: {
168            required: " Please select a Senator."
169        }
170    },
171    errorElement: "span",
172    errorClass: "field-validation-error",
173    errorPlacement: function (error, element) {
174        error.insertBefore('#NameLeg-Help');
175    },
176    highlight: function (element) {
177        $(element).addClass("validation-error");
178    },
179    unhighlight: function (element) {
180        $(element).removeClass("validation-error");
181    },
182    focusInvalid: false,
183    onkeyup: false,
184    onfocusout: false
185});
186
187//Unobtrusive Javascript styling for div with red background & border
188//This is for standard MVC Data Annotation errors
189$('form').on('submit', function () {
190
191    //Below removes validation/error classes from other forms on page
192    var submittedFormAction = $(this).attr('action');
193    $('form').not('form[action="' + submittedFormAction + '"]').each(function () {
194        var otherFormAction = $(this).attr('action');
195        $('form[action="' + otherFormAction + '"] span.field-validation-error').text('');
196        $('form[action="' + otherFormAction + '"] .validation-error').removeClass("validation-error").removeClass('validation-error-border');
197    });
198});
199
200//Remove validation/error classes on input blur
201$('.input-wrap input,.input-wrap select').bind('blur', function () {
202    if ($(this).val() != '') {
203        $('form span.field-validation-error').text('');
204        $('form .validation-error').removeClass("validation-error").removeClass('validation-error-border');
205    }
206});
207
208

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.