Mercurial Hosting > disearch
comparison src/site.js @ 12:3e2cb946d511
form handling
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Mon, 30 Oct 2023 14:59:45 -0600 |
| parents | 62dd23f0b549 |
| children |
comparison
equal
deleted
inserted
replaced
| 11:62dd23f0b549 | 12:3e2cb946d511 |
|---|---|
| 41 window.err = null; | 41 window.err = null; |
| 42 } | 42 } |
| 43 ajax( '/error_log.js', 'err='+encodeURIComponent(err) ); | 43 ajax( '/error_log.js', 'err='+encodeURIComponent(err) ); |
| 44 }; | 44 }; |
| 45 | 45 |
| 46 | |
| 47 function ajaxForm(url,form) { | |
| 48 let post = ''; | |
| 49 for( let i=0; i<form.length; i++ ) { | |
| 50 let input = form[i]; | |
| 51 let name = input.name; | |
| 52 if( name === '' ) | |
| 53 continue; | |
| 54 let type = input.type; | |
| 55 if( (type==='radio' || type==='checkbox') && !input.checked ) | |
| 56 continue; | |
| 57 post += name + '=' + encodeURIComponent(input.value) + '&'; | |
| 58 } | |
| 59 ajax(url,post,{form:form}); | |
| 60 } | |
| 61 | |
| 62 function clearErrors(form) { | |
| 63 let divs = form.querySelectorAll('div[error]'); | |
| 64 for( let i=0; i<divs.length; i++ ) { | |
| 65 divs[i].textContent = ''; | |
| 66 } | |
| 67 } | |
| 68 | |
| 69 function showError(form,field,message) { | |
| 70 clearErrors(form); | |
| 71 let err = form.querySelector('[error="'+field+'"]'); | |
| 72 err.textContent = message; | |
| 73 err.scrollIntoViewIfNeeded(false); | |
| 74 err.setAttribute('flash',''); | |
| 75 setTimeout(function(){err.removeAttribute('flash')},2000); | |
| 76 let input = form.querySelector('input[name="'+field+'"]'); | |
| 77 if(input) input.focus(); | |
| 78 } | |
| 79 | |
| 80 | |
| 46 let currentPulldown = null; | 81 let currentPulldown = null; |
| 47 let newPulldown = null; | 82 let newPulldown = null; |
| 48 | 83 |
| 49 function clickMenu(clicked,display) { | 84 function clickMenu(clicked,display) { |
| 50 //console.log("clickMenu"); | 85 //console.log("clickMenu"); |
