X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=js%2Finserts.js;h=d85a9062eacdb8265ac5c5811c2042a0a1e96812;hb=d7dde51cf888dfc7e049fefed38e786a369b9b38;hp=235de1812167082b813805397856340a4761a19a;hpb=3cd8244320b538d58d6cb3ed4861c129bb74143d;p=fa-stable.git diff --git a/js/inserts.js b/js/inserts.js index 235de181..d85a9062 100644 --- a/js/inserts.js +++ b/js/inserts.js @@ -31,7 +31,7 @@ function _expand(tabobj) { alltabs[i].className = "ajaxbutton" //deselect all tabs } tabobj.className = "current"; - JsHttpRequest.request(tabobj.name) + JsHttpRequest.request(tabobj) } } @@ -42,14 +42,20 @@ function expandtab(tabcontentid, tabnumber) { } function _set_combo_input(e) { + e.setAttribute('_last', e.value); e.onblur=function() { var but_name = this.name.substring(0, this.name.length-4)+'button'; var button = document.getElementsByName(but_name)[0]; var select = document.getElementsByName(this.getAttribute('rel'))[0]; save_focus(select); -// this.style.display='none'; - if(button) { // if *_button set submit search request - JsHttpRequest.request(but_name); +// submit request if there is submit_on_change option set and +// search field has changed. + if (button && (this.value != this.getAttribute('_last'))) { + JsHttpRequest.request(button); + } else if(this.className=='combo2') { + this.style.display = 'none'; + select.style.display = 'inline'; + setFocus(select.name); } return false; }; @@ -68,15 +74,15 @@ function _set_combo_input(e) { } } } - }; - e.onkeydown = function(ev) { + }; + e.onkeydown = function(ev) { ev = ev||window.event; key = ev.keyCode||ev.which; if(key == 13) { this.blur(); return false; } - } + } } function _update_box(s) { @@ -85,25 +91,34 @@ function _update_box(s) { var box = document.getElementsByName(rel)[0]; if(box && s.selectedIndex>=0) { var opt = s.options[s.selectedIndex]; - if(box) box.value = byid ? opt.value : opt.text; + if(box) { + box.value = byid ? opt.value : opt.text; + box.setAttribute('_last', box.value); + } } } function _set_combo_select(e) { + // When combo position is changed via js (eg from searchbox) + // no onchange event is generated. To ensure proper change + // signaling we must track selectedIndex in onblur handler. + e.setAttribute('_last', e.selectedIndex); e.onblur = function() { if(this.className=='combo') _update_box(this); + if (this.selectedIndex != this.getAttribute('_last')) + this.onchange(); } e.onchange = function() { var s = this; - + this.setAttribute('_last', this.selectedIndex); if(s.className=='combo') _update_box(s); if(s.selectedIndex>=0) { var sname = '_'+s.name+'_update'; var update = document.getElementsByName(sname)[0]; if(update) { - JsHttpRequest.request(sname); + JsHttpRequest.request(update); } } return true; @@ -146,18 +161,38 @@ var inserts = { 'input.ajaxsubmit,input.editbutton,input.navibutton': function(e) { e.onclick = function() { - JsHttpRequest.request(this.name); - return false; + JsHttpRequest.request(this); + return false; } }, '.amount': function(e) { if(e.onblur==undefined) { - var dec = e.getAttribute("dec"); e.onblur = function() { + var dec = this.getAttribute("dec"); price_format(this.name, get_amount(this.name), dec); }; } }, + '.searchbox': // emulated onchange event handling for text inputs + function(e) { + e.setAttribute('_last_val', e.value); + e.setAttribute('autocomplete', 'off'); //must be off when calling onblur + e.onblur = function() { + var val = this.getAttribute('_last_val'); + if (val != this.value) { + this.setAttribute('_last_val', this.value); + JsHttpRequest.request('_'+this.name+'_changed', this.form); + } + } + e.onkeydown = function(ev) { + ev = ev||window.event; + key = ev.keyCode||ev.which; + if (key == 13 && (this.value != this.getAttribute('_last_val'))) { + this.blur(); + return false; + } + } + }, 'select': function(e) { if(e.onfocus==undefined) { e.onfocus = function() {