1function check_form_submittable(form_id) 2{ 3 if (jQuery('#' + form_id + ' .ap-captcha-type').val() == 'human') 4 { 5 var error_message = jQuery('#' + form_id + ' #ap-captcha-result').attr('data-required-msg'); 6 if (error_message == '') 7 { 8 error_message = ap_captcha_error_message; 9 } 10 var first_num = jQuery('#' + form_id + ' .ap-captcha-first-num').html(); 11 var second_num = jQuery('#' + form_id + ' .ap-captcha-second-num').html(); 12 var result = parseInt(first_num) + parseInt(second_num); 13 var user_result = jQuery('#' + form_id + ' #ap-captcha-result').val(); 14 if (result == user_result) 15 { 16 jQuery('#' + form_id + ' .ap-front-loader').show(); 17 jQuery('#' + form_id + ' input[type="submit"]').hide(); 18 return true; 19 } else 20 { 21 jQuery('#' + form_id + ' .ap-captcha-error-msg').html(error_message); 22 return false; 23 } 24 return false; 25 } else if (jQuery('#' + form_id + ' .ap-captcha-type').val() == 'google') 26 { 27 if (jQuery('#' + form_id + ' .ap-captcha-version').val() == 'v1') { 28 challengeField = jQuery("input#recaptcha_challenge_field").val(); 29 responseField = jQuery("input#recaptcha_response_field").val(); 30 var html = jQuery.ajax({ 31 type: "POST", 32 url: ap_fileuploader.upload_url, 33 data: "action=ap_validate_recaptcha&recaptcha_challenge_field=" + challengeField + "&recaptcha_response_field=" + responseField + '&_wpnonce=' + ap_fileuploader.nonce + '&form_id=' + form_id, 34 async: false, 35 beforeSend: function (xhr) { 36 jQuery('#' + form_id + ' .ap-front-loader').show(); 37 } 38 }).responseText; 39 if (html == "success") { 40 jQuery('#' + form_id + ' .ap-front-loader').show(); 41 jQuery('#' + form_id + ' input[type="submit"]').hide(); 42 43 //return true; 44 //Add the Action to the Form 45 //Indicate a Successful Captcha 46 //jQuery("#captcha-status").html("<p>Success! Thanks you may now proceed.</p>"); 47 } else { 48 jQuery('#' + form_id + ' .ap-front-loader').hide(); 49 50 51 var error_message = jQuery('#' + form_id + ' .ap-captcha-error').attr('data-error-message'); 52 if (error_message == '') 53 { 54 error_message = ap_captcha_error_message; 55 } 56 jQuery('#' + form_id + ' .ap-captcha-error').html(error_message); 57 Recaptcha.reload(); 58 return false; 59 } 60 } else { 61 var captcha_val = jQuery('#g-recaptcha-response').val(); 62 if (captcha_val != '') { 63 jQuery('#' + form_id + ' .ap-front-loader').show(); 64 var response = jQuery.ajax({ 65 type: 'POST', 66 url: ap_fileuploader.upload_url, // The file we're making the request to 67 data: 'captchaResponse=' + captcha_val + '&action=ap_validate_recaptcha&form_id=' + form_id + '&_wpnonce=' + ap_fileuploader.nonce, 68 async: false, 69 beforeSend: function (xhr) { 70 //alert('test'); 71 jQuery('#' + form_id + ' .ap-front-loader').show(); 72 } 73 }).responseText; 74 if (response != 'SPAM') { 75 jQuery('#' + form_id + ' .ap-front-loader').show(); 76 jQuery('#' + form_id + ' input[type="submit"]').hide(); 77 78 return true; 79 } else { 80 jQuery('#' + form_id + ' .ap-front-loader').hide(); 81 var error_message = jQuery('#' + form_id + ' .ap-captcha-error').attr('data-error-message'); 82 if (error_message == '') 83 { 84 error_message = ap_captcha_error_message; 85 } 86 jQuery('#' + form_id + ' .ap-captcha-error').html(error_message); 87 return false; 88 } 89 90 91 } else { 92 var error_message = jQuery('#' + form_id + ' .ap-captcha-error').attr('data-error-message'); 93 if (error_message == '') 94 { 95 error_message = ap_captcha_error_message; 96 } 97 jQuery('#' + form_id + ' .ap-captcha-error').html(error_message); 98 return false; 99 } 100 101 102 } 103 104 105 106 } else 107 { 108 jQuery('#' + form_id + ' .ap-front-loader').show(); 109 jQuery('#' + form_id + ' input[type="submit"]').hide(); 110 return true; 111 } 112 113} 114function validateEmail($email) { 115 var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; 116 if (!emailReg.test($email)) { 117 return false; 118 } else { 119 return true; 120 } 121} 122 123(function ($) { 124 $(function () { 125 126 127 //All js related for frontend 128 129 //Checking required fields 130 131 $('.ap-pro-front-form .ap-pro-submit-btn').click(function () { 132 var error_flag = 0; 133 var id = $(this).closest('.ap-pro-front-form').attr('id'); 134 if ($('#' + id + ' .ap-form-wp-editor').length > 0) 135 { 136 tinyMCE.triggerSave(); 137 if ($('#' + id + ' .ap-character-limit-flag').length > 0 && $('#' + id + ' .ap-character-limit-flag').val() == 1) { 138 139 error_flag = 1; 140 } 141 142 } 143 if ($('#' + id + ' .ap-form-content-editor').length > 0) 144 { 145 if ($.trim($('#' + id + ' .ap-form-content-editor').val()) == '' && $('#' + id + ' .ap-form-content-error').attr('data-required') == 'required') 146 { 147 error_flag = 1; 148 var error_msg = $('#' + id + ' .ap-form-content-error').attr('data-required-msg'); 149 if (error_msg == '') 150 { 151 error_msg = ap_form_required_message; 152 } 153 $('#' + id + ' .ap-form-content-error').html(error_msg); 154 } 155 } 156 157 158 $('#' + id + ' input').each(function () { 159 if ($(this).hasClass('ap-required-field') && $.trim($(this).val()) == '') 160 { 161 error_flag = 1; 162 var error_msg = $(this).attr('data-required-msg'); 163 if (error_msg == '') 164 { 165 error_msg = ap_form_required_message; 166 } 167 $(this).closest('.ap-pro-form-field-wrapper').find('.ap-form-error').html(error_msg); 168 } 169 if ($(this).hasClass('ap-email-field') && $.trim($(this).val() != '')) 170 { 171 if (!validateEmail($(this).val())) 172 { 173 error_flag = 1; 174 var error_msg = $(this).attr('data-required-msg'); 175 if (error_msg == '') 176 { 177 error_msg = ap_form_required_message; 178 } 179 $(this).closest('.ap-pro-form-field-wrapper').find('.ap-form-error').html(error_msg); 180 } 181 182 } 183 if ($(this).attr('name') == 'ap_form_post_image' && $(this).val() != '') { 184 var file = $(this).val(); 185 var file_array = file.split('\\'); 186 var filename = file_array.pop(); 187 var filename_array = filename.split('.'); 188 var extension = filename_array.pop(); 189 extension = extension.toLowerCase(); 190 if (!(extension == 'jpg' || extension == 'jpeg' || extension == 'png' || extension == 'gif')) { 191 error_flag = 1; 192 $(this).closest('.ap-pro-form-field-wrapper').find('.ap-form-error').html('Unsupported filetype'); 193 } 194 } 195 }); 196 197 $('#' + id + ' textarea.ap-pro-textarea').each(function () { 198 if ($(this).hasClass('ap-required-field') && $.trim($(this).val()) == '') 199 { 200 error_msg = $(this).attr('data-required-msg'); 201 if (error_msg == '') 202 { 203 error_msg = ap_form_required_message; 204 } 205 $(this).closest('.ap-pro-form-field-wrapper').find('.ap-form-error').html(error_msg); 206 } 207 }); 208 $('#' + id + ' select').each(function () { 209 210 if ($(this).hasClass('ap-required-field') && $.trim($(this).val()) == '') 211 { 212 error_flag = 1; 213 error_msg = $(this).attr('data-required-msg'); 214 if (error_msg == '') 215 { 216 error_msg = ap_form_required_message; 217 } 218 $(this).closest('.ap-pro-form-field-wrapper').find('.ap-form-error').html(error_msg); 219 } 220 }); 221 222 $('#' + id + ' .ap-radio-wrap').each(function () { 223 if ($(this).hasClass('ap-required-field') && $(this).find('input[type="radio"]:checked').length == 0) 224 { 225 error_flag = 1; 226 error_msg = $(this).attr('data-required-msg'); 227 if (error_msg == '') 228 { 229 error_msg = ap_form_required_message; 230 } 231 $(this).closest('.ap-pro-form-field-wrapper').find('.ap-form-error').html(error_msg); 232 } 233 234 }); 235 $('#' + id + ' .ap-checkbox-wrap').each(function () { 236 if ($(this).hasClass('ap-required-field') && $(this).find('input[type="checkbox"]:checked').length == 0) 237 { 238 error_flag = 1; 239 error_msg = $(this).attr('data-required-msg'); 240 if (error_msg == '') 241 { 242 error_msg = ap_form_required_message; 243 } 244 $(this).closest('.ap-pro-form-field-wrapper').find('.ap-form-error').html(error_msg); 245 } 246 247 }); 248 if ($('#' + id + ' .ap-agreement-checkbox').length > 0 && !$('#' + id + ' .ap-agreement-checkbox').is(":checked")) 249 { 250 error_flag = 1; 251 var error_msg = $('#' + id + ' .ap-agreement-checkbox').attr('data-required-msg'); 252 if (error_msg == '') 253 { 254 error_msg = ap_form_required_message; 255 } 256 $('#' + id + ' .ap-agreement-error').html(error_msg); 257 } 258 259 if (error_flag == 1) 260 { 261 $('#' + id + ' .ap-form-error').each(function () { 262 var selector = $(this); 263 if (selector.html() != '') { 264 $('html,body').animate({ 265 scrollTop: selector.closest('.ap-pro-form-field-wrapper').offset().top - 100}, 266 'slow'); 267 return false; 268 } 269 ; 270 }); 271 272 273 274 return false; 275 } else 276 { 277 return true; 278 } 279 280 }); 281 $('.ap-pro-front-form input[type="text"]').keyup(function () { 282 $(this).closest('.ap-pro-form-field-wrapper').find('.ap-form-error').html(''); 283 }); 284 285 $('.ap-pro-front-form textarea.ap-pro-textarea').keyup(function () { 286 $(this).closest('.ap-pro-form-field-wrapper').find('.ap-form-error').html(''); 287 }); 288 $('.ap-form-content-editor').keyup(function () { 289 $('.ap-form-content-error').html(''); 290 }); 291 292 $('.ap-pro-front-form select,.ap-pro-front-form input[type="checkbox"]').change(function () { 293 $(this).closest('.ap-pro-form-field-wrapper').find('.ap-form-error').html(''); 294 }); 295 $('.ap-form-content-editor').change(function () { 296 $('.ap-form-content-error').html(''); 297 }); 298 299 $('.ap-pro-datepicker').datepicker(); 300 $('.ap-pro-datepicker').each(function () { 301 var date_format = $(this).data('date-format'); 302 date_format = (date_format) ? date_format : 'yy-mm-dd'; 303 $(this).datepicker("option", "dateFormat", date_format); 304 }); 305 306 $('.ap-agreement-checkbox').click(function () { 307 if ($(this).is(':checked')) 308 { 309 $(this).closest('.ap-form-agreement-wrap').find('.ap-agreement-error').html(''); 310 } else 311 { 312 var error_msg = $(this).attr('data-required-msg'); 313 if (error_msg == '') 314 { 315 error_msg = ap_form_required_message; 316 } 317 $(this).closest('.ap-form-agreement-wrap').find('.ap-agreement-error').html(error_msg); 318 } 319 320 }); 321 322 /*----------File Uploader-----------------*/ 323 var uploader_counter = 0; 324 var uploader = {}; 325 $('.ap-file-uploader').each(function () { 326 var $selector = $(this); 327 // uploader_counter++; 328 var attr_element_id = $(this).attr('id'); 329 var arr_element_id = attr_element_id.split('-'); 330 var element_id = arr_element_id[3]; 331 uploader_counter = element_id; 332 var extensions = $(this).attr('data-extensions'); 333 var extensions_array = extensions.split('|'); 334 var size = $(this).attr('data-size'); 335 var multiple_upload = $(this).attr('data-multiple'); 336 var limit_flag = 0; 337 var upload_limit = $(this).attr('data-upload-limit'); 338 var selector = $(this); 339 var uploader_label = $(this).data('uploader-label');
340 var upload_limit_message = $(this).data('upload-limit-message'); 341 var media_attachment = $(this).data('media-attachment'); 342 var custom_folder = $(this).data('cf'); 343 var upload_nonce = $('#ap_form_nonce').val(); 344 uploader['uploader' + uploader_counter] = new qq.FileUploader({ 345 element: document.getElementById('ap-file-uploader-' + uploader_counter), 346 // path to server-side upload script 347 // action: '/server/upload' 348 action: ap_fileuploader.upload_url, 349 params: { 350 action: 'ap_file_upload_action', 351 file_uploader_nonce: upload_nonce, 352 allowedExtensions: extensions_array, 353 sizeLimit: size, 354 element_id: element_id, 355 custom_folder: custom_folder 356 357 }, 358 allowedExtensions: extensions_array, 359 sizeLimit: size, // 100mb 360 minSizeLimit: 500, 361 uploadButtonText: uploader_label, 362 onSubmit: function (id, fileName) { 363 if (multiple_upload == true && upload_limit != -1) { 364 var limit_counter = selector.parent().find('.ap-pro-upload-counter').val(); 365 limit_counter++; 366 selector.parent().find('.ap-pro-upload-counter').val(limit_counter); 367 //limit_counter = $('#ap-pro-file-preview'+id+' .ap-pro-prev-holder').length; 368 //alert(limit_counter); 369 if (limit_counter > upload_limit) { 370 if (limit_flag == 0) { 371 upload_limit_message = (upload_limit_message != '') ? upload_limit_message : 'Maximum number of files allowed is ' + upload_limit; 372 selector.parent().find('.ap-upload-limit-error').html(upload_limit_message); 373 374 //console.log(id); 375 //alert('Maximum number of files allowed is '+upload_limit); 376 limit_flag = 1; 377 } 378 selector.parent().find('.ap-pro-upload-counter').val(upload_limit); 379 return false; 380 } 381 } 382 }, 383 onProgress: function (id, fileName, loaded, total) { 384 }, 385 onComplete: function (id, fileName, responseJSON) { 386 //alert(id); 387 388 //console.log(responseJSON); 389 if (responseJSON.success) 390 { 391 //tinyMCE.triggerSave(); 392 $('#ap-pro-file-url-' + element_id).closest('.ap-pro-form-field-wrapper').find('.ap-form-error').html(''); 393 var extension_array = fileName.split('.'); 394 var extension = extension_array.pop(); 395 if (extension == 'jpg' || extension == 'jpeg' || extension == 'png' || extension == 'gif' || extension == 'JPG' || extension == 'JPEG' || extension == 'PNG' || extension == 'GIF') { 396 397 var preview_html = '<div class="ap-pro-prev-holder"><span class="ap-prev-name">' + fileName + '</span><img src="' + responseJSON.url + '" /><span class="ap-pro-preview-remove" data-url="' + responseJSON.url + '" data-id="' + element_id + '" data-attachment-id="' + responseJSON.attachment_id + '" data-attachment-code="' + responseJSON.attachment_code + '">x</span></div>'; 398 } else { 399 400 var preview_html = '<div class="ap-pro-prev-holder"><span class="ap-prev-name">' + fileName + '</span><span class="ap-pro-preview-remove" data-url="' + responseJSON.url + '" data-id="' + element_id + '" data-attachment-id="' + responseJSON.attachment_id + '" data-attachment-code="' + responseJSON.attachment_code + '">x</span></div>'; 401 } 402 if (multiple_upload) 403 { 404 var url = responseJSON.url; 405 var previous_url = $('#ap-pro-file-url-' + element_id).val(); 406 if (previous_url == '') 407 { 408 $('#ap-pro-file-url-' + element_id).val(url); 409 } else 410 { 411 $('#ap-pro-file-url-' + element_id).val(previous_url + ',' + url); 412 } 413 $('#ap-pro-file-preview' + element_id).append(preview_html); 414 } else 415 { 416 if ($selector.hasClass('ap-post-image-uploader')) { 417 $('#ap-pro-file-url-' + element_id).val(responseJSON.attachment_id); 418 } else { 419 420 $('#ap-pro-file-url-' + element_id).val(responseJSON.url); 421 } 422 $('#ap-pro-file-preview' + element_id).html(preview_html); 423 424 } 425 426 if (media_attachment == 1) { 427 var attachment_ids = selector.closest('form').find('.ap-attachment-ids').val(); 428 if (attachment_ids != '') { 429 var attachment_ids_array = attachment_ids.split(','); 430 attachment_ids_array.push(responseJSON.attachment_id); 431 var attachment_ids = attachment_ids_array.join(); 432 selector.closest('form').find('.ap-attachment-ids').val(attachment_ids); 433 } else { 434 selector.closest('form').find('.ap-attachment-ids').val(responseJSON.attachment_id); 435 } 436 } 437 } 438 439 }, 440 onCancel: function (id, fileName) { 441 }, 442 onError: function (id, fileName, xhr) { 443 }, 444 messages: { 445 typeError: " {file}
445 has invalid extension. Only {extensions} are allowed.", 446 sizeError: "{file} is too large, maximum file size is {sizeLimit}.", 447 minSizeError: "{file} is too small, minimum file size is {minSizeLimit}.", 448 emptyError: "{file} is empty, please select files again without it.", 449 onLeave: "The files are being uploaded, if you leave now the upload will be cancelled." 450 }, 451 showMessage: function (message) { 452 alert(message); 453 }, 454 multiple: multiple_upload 455 }); 456 }); 457 if ($('.ap-content-file-uploader').length > 0) 458 { 459 460 $('.ap-content-file-uploader').each(function () { 461 var id = $(this).attr('id'); 462 var link_source_url = $(this).data('link-source-url'); 463 var lightbox_rel_attr = $(this).data('lightbox-rel-attr'); 464 var uploadSizeLimit = $(this).attr('data-upload-size'); 465 var upload_nonce = $('#ap_form_nonce').val(); 466 var content_image_uploader = new qq.FileUploader({ 467 element: document.getElementById(id), 468 // path to server-side upload script 469 // action: '/server/upload' 470 action: ap_fileuploader.upload_url, 471 params: { 472 action: 'ap_file_upload_action', 473 file_uploader_nonce: upload_nonce, 474 allowedExtensions: ['jpg', 'png', 'gif', 'jpeg'], 475 sizeLimit: uploadSizeLimit, 476 }, 477 allowedExtensions: ['jpg', 'png', 'gif', 'jpeg'], 478 sizeLimit: uploadSizeLimit, // 100mb 479 minSizeLimit: 500, 480 onSubmit: function (id, fileName) { 481 482 }, 483 onProgress: function (id, fileName, loaded, total) { 484 }, 485 onComplete: function (id, fileName, responseJSON) { 486 487 //console.log(responseJSON); 488 if (responseJSON.success) 489 { 490 tinyMCE.triggerSave(); 491 if (link_source_url == 1) { 492 if (lightbox_rel_attr == 1) { 493 var insert_content = '<a href="' + responseJSON.url + '" rel="lightbox"><img src="' + responseJSON.url + '" class="size-full wp-image-' + responseJSON.attachment_id + '" alt="' + fileName + '"/></a>'; 494 } else { 495 496 var insert_content = '<a href="' + responseJSON.url + '"><img src="' + responseJSON.url + '" class="size-full wp-image-' + responseJSON.attachment_id + '" alt="' + fileName + '"/></a>'; 497 } 498 } else { 499 500 var insert_content = '<img src="' + responseJSON.url + '" class="size-full wp-image-' + responseJSON.attachment_id + '" alt="' + fileName + '"/>'; 501 } 502 tinyMCE.activeEditor.execCommand('mceInsertContent', false, insert_content); 503 504 $('#ap-content-file-uploader .qq-upload-list').html(''); 505 } 506 507 }, 508 onCancel: function (id, fileName) { 509 }, 510 onError: function (id, fileName, xhr) { 511 }, 512 messages: { 513 typeError: " {file} has invalid extension. Only {extensions} are allowed.", 514 sizeError: "{file} is too large, maximum file size is {sizeLimit}.", 515 minSizeError: "{file} is too small, minimum file size is {minSizeLimit}.", 516 emptyError: "{file} is empty, please select files again without it.", 517 onLeave: "The files are being uploaded, if you leave now the upload will be cancelled." 518 }, 519 showMessage: function (message) { 520 alert(message); 521 }, 522 multiple: false 523 }); 524 }); 525 } 526 527 528 529 /*----------File Uploader-----------------*/ 530 531 // tinyMCE.execCommand('mceInsertContent', false, "some text"); 532// tinyMCE.triggerSave(); 533 /** 534 * File Delete Action 535 */ 536 $('body').on('click', '.ap-pro-preview-remove', function () { 537 var selector = $(this); 538 var ajax_url = ap_fileuploader.upload_url; 539 var url = $(this).data('url'); 540 var id = $(this).data('id'); 541 var attachment_id = $(this).data('attachment-id'); 542 attachment_id = $.trim(attachment_id); 543 var attachment_code = $(this).data('attachment-code'); 544 $.ajax({
545 url: ajax_url, 546 data: 'action=ap_file_delete_action&_wpnonce=' + ap_fileuploader.nonce + '&attachment_id=' + attachment_id + '&attachment_code=' + attachment_code, 547 type: 'post', 548 success: function (res) { 549 if (res == 'success') { 550 var attachment_ids = selector.closest('form').find('.ap-attachment-ids').val(); 551 attachment_ids = $.trim(attachment_ids); 552 var attachment_ids_array = attachment_ids.split(','); 553 var attachment_index = attachment_ids_array.indexOf(attachment_id); 554 if (attachment_index != -1) { 555 attachment_ids_array.splice(attachment_index, 1); 556 var attachment_ids = attachment_ids_array.join(); 557 selector.closest('form').find('.ap-attachment-ids').val(attachment_ids); 558 } 559 560 var prev_url = $('#ap-pro-file-url-' + id).val(); 561 //alert(prev_url); 562 var new_url = prev_url.replace(url, ''); 563 new_url = new_url.replace(',,', ','); 564 $('#ap-pro-file-url-' + id).val(new_url); 565 var limit_counter = $('#ap-pro-upload-counter-' + id).val(); 566 //console.log(limit_counter); 567 limit_counter--; 568 //selector.closest('.ap-pro-form-field').find('.ap-upload-limit-error').html(''); 569 $('#ap-pro-upload-counter-' + id).val(limit_counter); 570 selector.parent().fadeOut('1500', function () { 571 selector.parent().remove(); 572 573 }); 574 } else { 575 alert('No script kiddies please!'); 576 } 577 } 578 }); 579 }); 580 581 /** Limit Characters */ 582 if ($('.ap-pro-character-limit').length > 0) { 583 var editor_char_limit = $('.ap-pro-character-limit').val(); 584 585 // jQuery ready fires too early, use window.onload instead 586 window.onload = function () { 587 var char_limit_message = $('.ap-pro-character-limit-message').val(); 588 jQuery('.mce-statusbar').append('<span class="word-count-message">' + char_limit_message + '</span>'); 589 590 tinyMCE.activeEditor.onKeyUp.add(function () { 591 $('.ap-form-content-error').html(''); 592 // Strip HTML tags, WordPress shortcodes and white space 593 editor_content = this.getContent().replace(/(<[a-zA-Z\/][^<>]*>|\[([^\]]+)\])|(\s+)/ig, ''); 594 //console.log(editor_content.length); 595 if (editor_content.length > editor_char_limit) { 596 jQuery('.mce-statusbar').addClass('toomanychars'); 597 $('.ap-character-limit-flag').val(1); 598 //error_flag = 1; 599 } else { 600 jQuery('.mce-statusbar').removeClass('toomanychars'); 601 $('.ap-character-limit-flag').val(0); 602 //error_flag = 0; 603 } 604 }); 605 } 606 } 607 608 $('input[name="ap_form_post_image"]').change(function () { 609 var file = $(this).val(); 610 var file_array = file.split('\\'); 611 var filename = file_array.pop(); 612 var filename_array = filename.split('.'); 613 var extension = filename_array.pop(); 614 if (!(extension == 'jpg' || extension == 'jpeg' || extension == 'png' || extension == 'gif' || extension == 'JPG' || extension == 'JPEG' || extension == 'PNG' || extension == 'GIF')) { 615 616 $(this).closest('.ap-pro-form-field-wrapper').find('.ap-form-error').html('Unsupported filetype'); 617 } else { 618 $(this).closest('.ap-pro-form-field-wrapper').find('.ap-form-error').html(''); 619 } 620 }); 621 622 623 }); //document.ready close 624 625}(jQuery));
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.