我有一个 XPage,它使用 JQuery 对话框和客户端验证来验证用户进程的输入。问题是,当我单击“添加”按钮时,客户端验证有效,但在服务器端“无法”找到这些字段的属性。当用户单击“打开对话框”按钮时,会显示对话框,这是我的按钮发生魔术的地方(例如,只有一个属性):
<xp:button id="save_part_btn" value="+Add" style="float:right;">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:
/*
var estdoc:NotesDocument=database.getDocumentByUNID(doc_source.getDocument().getParentDocumentUNID())
var estPartdoc:NotesDocument=estdoc.getParentDatabase().createDocument()
Ignore it
estPartdoc.replaceItemValue('Form','Estimate_Cost_Part')
estPartdoc.replaceItemValue('Predoc',estdoc.getUniversalID())
estPartdoc.replaceItemValue('$OSN_IsSaved','1')
*/
estPartdoc.replaceItemValue('TSNB_All',getComponent('input_tsnb_all').getValue())
}]]></xp:this.action>
<xp:this.script><![CDATA[
var isValid = true;
var result = "";
function isStringEmpty(string2Check)
{
return string2Check == "" || string2Check[0] == " ";
}
function isNumberCorrect(number2Check)
{
return /^[1-9]\d*(,\d{1,3})?$/.test(number2Check.toString());
}
if(isStringEmpty(document.getElementById("#{id:input_tsnb_all}").value))
{
wholeValid = false;
result += '-The field cannot be empty\n'
}
else if(!isNumberCorrect(document.getElementById("#{id:input_tsnb_all}").value))
{
wholeValid = false;
result += '-The field is not correct\n'
}
if(!isValid)
alert(result)
return isValid;
]]></xp:this.script>
</xp:eventHandler>
</xp:button>
客户端验证完美运行 - 当用户输入不正确时,alert
将显示消息。但是,input_tsbn_all
在服务器端找不到,无法创建具有此属性的文档。实际上确实如此,但 input_tsbn_all 的值在null
. 问题是什么?
该属性的标记为:
<xp:tr>
<xp:td><xp:label value="All:"/></xp:td>
<xp:td>
<xp:inputText id="input_tsnb_all"
disableClientSideValidation="true"
styleClass="doc_field_textinput" size="40" >
<xp:this.converter>
<xp:convertNumber pattern="0.000"></xp:convertNumber>
</xp:this.converter>
</xp:inputText>
</xp:td>
</xp:tr>
我的 jQuery 代码:
var dialogAddPartDiv = $('.dialogAddPart');
$('.addButton').click(function()
{
dialogAddPartDiv.dialog('open');
});
dialogAddPartDiv.dialog(
{
create: function (event, ui) {
$(".ui-corner-all").css('border-bottom-right-radius','8px');
$(".ui-corner-all").css('border-bottom-left-radius','8px');
$(".ui-corner-all").css('border-top-right-radius','8px');
$(".ui-corner-all").css('border-top-left-radius','8px');
$(".ui-dialog").css('border-bottom-left-radius','0px');
$(".ui-dialog").css('border-bottom-right-radius','0px');
$(".ui-dialog").css('border-top-left-radius','0px');
$(".ui-dialog").css('border-top-right-radius','0px');
$('.ui-dialog-titlebar-close').css('margin', '-25px -20px 0px 0px').css('border', 'solid 2px').css('border-radius', '15px').css('border-color', '#05788d');
$('.ui-dialog-titlebar-close').css('width', '25px').css('height', '25px');
},
autoOpen: false,
modal: true,
beforeClose : function(event)
{
if(!confirm("This won't be saved. Continue?"))
{
return false;
}
else
{
}
},
width:600,
resizable: false
});
document.getElementsByClassName('ui-dialog-titlebar-close')[0].setAttribute('title', 'Close it?');
隐藏的 div 只是在页面上声明如下:<xp:div styleClass="dialogAddPart">