JavaScript强制在Maximo中进行一次更改
我目前正在为Maximo开发一个Bookmarklet,这是一个JavaEE应用程序,我需要填充一些输入框 通常,当用户向框中输入数据时,他们单击一个按钮,弹出一个窗口,然后搜索要添加到脚本中的值。或者,他们可以键入名称并点击tab/enter,然后将其转换为大写字母,并在后台执行一些操作(不确定具体执行什么操作) 我目前使用JavaScript强制在Maximo中进行一次更改,javascript,internet-explorer,jakarta-ee,dom-events,maximo,Javascript,Internet Explorer,Jakarta Ee,Dom Events,Maximo,我目前正在为Maximo开发一个Bookmarklet,这是一个JavaEE应用程序,我需要填充一些输入框 通常,当用户向框中输入数据时,他们单击一个按钮,弹出一个窗口,然后搜索要添加到脚本中的值。或者,他们可以键入名称并点击tab/enter,然后将其转换为大写字母,并在后台执行一些操作(不确定具体执行什么操作) 我目前使用 Javascript: $('mx1354').value = "KHBRARR"; $('mx1354').ov= "KHBRARR"; 但它不像我需要的那样工作。它
Javascript: $('mx1354').value = "KHBRARR"; $('mx1354').ov= "KHBRARR";
但它不像我需要的那样工作。它将输入框设置为所需的值,但它不运行后台函数,因此当我点击“保存”按钮时,它不会将其识别为任何更改,并丢弃我放入框中的内容
如何模拟按下了tab/enter按钮
到目前为止,我已经尝试调用onchange、focus/blur和click函数(不能100%确定是否正确调用了它们)
dojo库是应用程序的一部分,因此我不确定是否可以使用dojo库,如果它是一个特性,或者jQuery是否会导致冲突
另外,这需要在IE中运行
OnChange函数:
function tb_(event)
{
event = (event) ? event : ((window.event) ? window.event : "");
if(DESIGNMODE)
return;
var ro = this.readOnly;
var exc=(this.getAttribute("exc")=="1");
switch(event.type)
{
case "mousedown":
if(getFocusId()==this.id)
this.setAttribute("stoptcclick","true");
break;
case "mouseup":
if (isIE() && !hasFocus(this))
{
this.focus();
}
if (isBidiEnabled)
{
adjustCaret(event, this); // bidi-hcg-AS
}
break;
case "blur":
input_onblur(event,this);
if (isBidiEnabled) // bidi-hcg-SC
input_bidi_onblur(event, this);
break;
case "change":
if(!ro)
input_changed(event,this);
break;
case "click":
if(overError(event,this))
showFieldError(event,this,true);
var liclick=this.getAttribute("liclick");
var li=this.getAttribute("li");
if(li!="" && liclick=="1")
{
frontEndEvent(getElement(li),'click');
}
if(this.getAttribute("stoptcclick")=="true")
{
event.cancelBubble=true;
}
this.setAttribute("stoptcclick","false");
break;
case "focus":
input_onfocus(event,this);
if (isBidiEnabled) // bidi-hcg-SC
input_bidi_onfocus(event, this);
this.select();
break;
case "keydown":
this.setAttribute("keydown","true");
if(!ro)
{
if(isBidiEnabled)
processBackspaceDelete(event,this); // bidi-hcg-AS
if(hasKeyCode(event, 'KEYCODE_DELETE') || hasKeyCode(event, 'KEYCODE_BACKSPACE'))
{
getHiddenForm().elements.namedItem("changedcomponentvalue").value = this.value;
}
if((hasKeyCode(event, 'KEYCODE_TAB') || hasKeyCode(event, 'KEYCODE_ESC')))
{
var taMatch = dojo.attr(this, "ta_match");
if(taMatch) {
if(taMatch.toLowerCase().indexOf(this.value.toLowerCase()) == 0)
{
console.log("tamatch="+taMatch);
this.value = taMatch;
input_keydown(event, this);
dojo.attr(this, {"prekeyvalue" : ""});
input_forceChanged(this);
inputchanged = false;
return; // don't want to do input_keydown again so preKeyValue will work
}
}
if(this.getAttribute("PopupType"))
{
var popup = dijit.byId(dojohelper.getPopupId(this));
if (popup)
{
dojohelper.closePickerPopup(popup);
if(hasKeyCode(event, 'KEYCODE_ESC'))
{
if (event.preventDefault)
{
event.preventDefault();
}
else
{
event.returnValue = false;
}
return;
}
}
}
}
input_keydown(event,this);
datespin(event,this);
}
else if(hasKeyCode(event,'KEYCODE_ENTER') || (hasKeyCode(event,'KEYCODE_DOWN_ARROW') && this.getAttribute("liclick")))
{
var lbId = this.getAttribute("li");
frontEndEvent(getElement(lbId), 'click');
}
else if(hasKeyCode(event,KEYCODE_BACKSPACE))
{
event.cancelBubble=true;
event.returnValue=false;
}
break;
case "keypress":
if(!ro)
{
if(event.ctrlKey==false && hasKeyCode(event,'KEYCODE_ENTER'))
{
var db = this.getAttribute("db");
if(db!="")
{
sendClick(db);
}
}
}
break;
case "keyup":
var keyDown = this.getAttribute("keydown");
this.setAttribute("keydown","false");
if(event.ctrlKey && hasKeyCode(event,'KEYCODE_SPACEBAR'))
{
if(showFieldError(event,this,true))
{
return;
}
else
{
menus.typeAhead(this,0);
}
}
if(!ro)
{
if(isBidiEnabled)
processBidiKeys(event,this); // bidi-hcg-AS
numericcheck(event,this);
var min = this.getAttribute("min");
var max = this.getAttribute("max");
if(min && max && min!="NONE" || max!="NONE")
{
if(min!="NONE" && parseInt(this.value)<parseInt(min))
{
this.value=min;
getHiddenForm().elements.namedItem("changedcomponentvalue").value = this.value;
this.select();
return false;
}
if(max!="NONE" && parseInt(this.value)>parseInt(max))
{
this.value=max;
getHiddenForm().elements.namedItem("changedcomponentvalue").value = this.value;
this.select();
return false;
}
}
var defaultButton = false;
if(event.ctrlKey==false && hasKeyCode(event,'KEYCODE_ENTER'))
{
var db = this.getAttribute("db");
if(db!="")
{
defaultButton=true;
}
}
input_changed(event,this);
}
else
{
setFocusId(event,this);
}
if(showFieldHelp(event, this))
{
return;
}
if(keyDown=="true" && hasKeyCode(event, 'KEYCODE_ENTER') && !event.ctrlKey && !event.altKey)
{
menus.typeAhead(this,0);
return;
}
if(!hasKeyCode(event, 'KEYCODE_ENTER|KEYCODE_SHIFT|KEYCODE_CTRL|KEYCODE_ESC|KEYCODE_ALT|KEYCODE_TAB|KEYCODE_END|KEYCODE_HOME|KEYCODE_RIGHT_ARROW|KEYCODE_LEFT_ARROW')
&& !event.ctrlKey && !event.altKey)
{
menus.typeAhead(this,0);
}
break;
case "mousemove":
overError(event,this);
break;
case "cut":
case "paste":
if(!ro)
{
var fldInfo = this.getAttribute("fldInfo");
if(fldInfo)
{
fldInfo = dojo.fromJson(fldInfo);
if(!fldInfo.query || fldInfo.query!=true)
{
setButtonEnabled(saveButton,true);
}
}
window.setTimeout("inputchanged=true;input_forceChanged(dojo.byId('"+this.id+"'));", 20);
}
break;
}
}
function tb(事件)
{
事件=(事件)?事件:((window.event)?window.event:);
if(设计模式)
返回;
var ro=this.readOnly;
var exc=(this.getAttribute(“exc”)=“1”);
开关(事件类型)
{
案例“mousedown”:
if(getFocusId()==this.id)
此.setAttribute(“stoptclick”、“true”);
打破
案例“mouseup”:
if(isIE()&&!hasFocus(this))
{
这是focus();
}
如果(可投标)
{
调整插入符号(事件,此);//比迪hcg AS
}
打破
案例“模糊”:
输入模糊(事件,此);
如果(isBidiEnabled)//bidi hcg SC
输入bidi onblur(事件,此);
打破
案例“变更”:
如果(!ro)
输入_已更改(事件,此);
打破
案例“点击”:
如果(过错误(事件,本次))
showFieldError(事件、此、真);
var liclick=this.getAttribute(“liclick”);
var li=此.getAttribute(“li”);
如果(li!=“和&liclick==“1”)
{
frontEndEvent(getElement(li),“单击”);
}
if(this.getAttribute(“stoptclick”)=“true”)
{
event.cancelBubble=true;
}
此.setAttribute(“stoptclick”、“false”);
打破
案例“焦点”:
输入焦点(事件、本);
如果(isBidiEnabled)//bidi hcg SC
输入焦点(事件、本);
这是select();
打破
案例“keydown”:
此.setAttribute(“keydown”、“true”);
如果(!ro)
{
如果(可投标)
processBackspaceDelete(事件,this);//bidi hcg AS
if(haskycode(事件'KEYCODE_DELETE')| | haskycode(事件'KEYCODE_BACKSPACE'))
{
getHiddenForm().elements.namedItem(“changedcomponentvalue”).value=this.value;
}
if((haskycode(事件,'KEYCODE_TAB')| | haskycode(事件,'KEYCODE_ESC'))
{
var taMatch=dojo.attr(这是“tau匹配”);
如果(塔马奇){
if(taMatch.toLowerCase().indexOf(this.value.toLowerCase())==0)
{
console.log(“tamatch=“+tamatch”);
this.value=taMatch;
输入\ U键关闭(事件,此);
attr(这个,{“prekeyvalue”:“});
输入力已更改(此项);
inputchanged=false;
return;//不想再次执行输入\u keydown,因此preKeyValue将起作用
}
}
if(this.getAttribute(“PopupType”))
{
var popup=dijit.byId(dojohelper.getPopupId(this));
如果(弹出)
{
dojohelper.closePickerPopup(弹出窗口);
if(haskycode(事件'KEYCODE_ESC'))
{
if(event.preventDefault)
{
event.preventDefault();
}
其他的
{
event.returnValue=false;
}
返回;
}
}
}
}
输入\ U键关闭(事件,此);
datespin(事件,本);
}
else if(haskycode(事件,'KEYCODE_ENTER')| |(haskycode(事件,'KEYCODE_向下箭头')和&this.getAttribute(“liclick”))
{
var lbId=this.getAttribute(“li”);
frontEndEvent(getElement(lbId),“单击”);
}
else if(haskycode(事件,KEYCODE\u退格))
{
event.cancelBubble=true;
event.returnValue=false;
}
打破
“按键”案例:
如果(!ro)
{
if(event.ctrlKey==false&&hasKeyCode(事件,'KEYCODE\u ENTER'))
{
var db=this.getAttribute(“db”);
如果(db!=“”)
{
sendClick(db);
}
}
}
打破
案例“keyup”:
var keyDown=this.getAttribute(“keyDown”);
input_changed(null,document.getElementById('IDHERE'));
cc : function(e,v){
e.focus(); //Get focus of the element
e.value = v; //Change the value
e.onchange(); //Call the onchange event
e.blur(); //Unfocus the element
console.log("TITLE === "+e.title);
if(e.title.indexOf(v) != -1) {
return true; //The value partially matches the requested value. No need to update
} else {
//Generate an hidden form and submit it to update the page with the new value
var hiddenForm = getHiddenForm();
var inputs = hiddenForm.elements;
inputs.namedItem("changedcomponentid").value = e.id;
inputs.namedItem("changedcomponentvalue").value = v;
inputs.namedItem("event").value = "X"; //Send a Dummy Event so the script see's its invalid and sets the right Event
submitHidden();
}
//Value isn't set to the required value so pass false
return false;
}
function riskmatrix_setvalue(callerId, lookupId, value,bgrColor,targetid){
if (document.getElementById(callerId).readOnly){
sendEvent('selectrecord', lookupId);
return;
}
textBoxCaller = document.getElementById(callerId);
//dojo.byId(callerId).setAttribute("value", value);
//dojo.byId(callerId).setAttribute("changed", true);
//dojohelper.input_changed_value(dojo.byId(callerId),value);
//textBoxCaller.style.background = bgrColor;
//var hiddenForm = getHiddenForm();
//if(!hiddenForm)
// return;
//var inputs = hiddenForm.elements;
//inputs.namedItem("event").value = "setvalue";
//inputs.namedItem("targetid").value = dojo.byId(callerId).id;
//inputs.namedItem("value").value = value;
//sendXHRFromHiddenForm();
textBoxCaller.focus(); //Get focus of the element
textBoxCaller.value = value; //Change the value
textBoxCaller.onchange(); //Call the onchange event
textBoxCaller.blur(); //Unfocus the element
//Generate an hidden form and submit it to update the page with the new value
var hiddenForm = getHiddenForm();
var inputs = hiddenForm.elements;
inputs.namedItem("changedcomponentid").value = textBoxCaller.id;
inputs.namedItem("changedcomponentvalue").value = value;
inputs.namedItem("event").value = "X"; //Send a Dummy Event so the script see's its invalid and sets the right Event
submitHidden();
sendEvent("dialogclose",lookupId);
}
var setFakeValue = function(e,v){
console.log("Changing value for element:", e, "\nNew value:", v);
e.focus(); //Get focus of the element
e.value = v; //Change the value
e.onchange(e); //Call the onchange event
e.blur(); //Unfocus the element
if(e.title.indexOf(v) != -1) {
return true; //The value partially matches the requested value. No need to update
}
else {
//Generate an hidden form and submit it to update the page with the new value
var hiddenForm = getHiddenForm();
var inputs = hiddenForm.elements;
inputs.namedItem("changedcomponentid").value = e.id;
inputs.namedItem("changedcomponentvalue").value = v;
inputs.namedItem("event").value = "X"; //Send a Dummy Event so the script see's its invalid and sets the right Event
submitHidden();
}
//Value isn't set to the required value so pass false
return false;
}
setFakeValue(html_element, new_value);