我正在尝试 jQuery 验证片用于apex:commandbutton
Visualforce (Salesforce)。如果它不是 AJAX 调用,它工作正常,我的意思是如果不oncomplete
为按钮设置和重新渲染属性。但如果我这样做,它会输入type='button'
而不是'submit'
. 因此,无论我的验证结果如何(或) ,我在 action 属性中指定的任何方法apex:commandbutton
都会被调用。true
false
为此,我尝试了以下选项,但没有任何结果。
这就是我要的 :
- 填写表格字段
- 单击命令按钮时,它应该使用 jQuery 进行验证(到目前为止,如果它的类型是提交,它就可以工作,但不幸的是,如果我将它更改为 AJAX 调用,它就会变成
type='button'
并且不工作) - 调用我的操作方法
action="{!SaveUserAndSendEmail}"
(如果验证通过创建联系人记录) Oncomplete="clickCreateUserButton();"
(一旦通过操作方法创建联系人记录,这将创建用户记录。
我尝试过的选项:
- 方法一:
一个。在里面添加以下 JQuery 脚本document.ready()
:
j$('[id$=SaveUserAndSendEmail]').click(
function()
{
if (j$('[id$=theForm]').validate().form() == true)
{
isValid = true;
SetContinueProcess(true);
//callSaveUserAndSendEmailHidden();
//j$('[id$=SaveUserAndSendEmailHidden]').click();
return true;
}
else
{
isValid = false;
SetContinueProcess(false);
return false;
}
}
);
湾。如您所见,我调用了一个名为 setContinueProcess 的函数,该函数调用 actionsupport 函数并设置属性 ContinueProcess,如果它为 false,则阻止控制器中 action 方法内的操作。
这不起作用,因为它转到服务器端并清除验证消息。
- 方法二:
一个。与上面提到的相同的 Jquery 方法。唯一的变化是,我没有调用 setContinueProcess,而是尝试使用另一个按钮并使用 display:none 将其隐藏,并尝试使用 jquery 和普通 javascript 从上面的条件中单击它document.getelementbyid("buttonid").click()
;这调用了 action 方法并创建了联系人记录,但未调用 oncomplete 方法。
- 方法3:
一个。相同的 Jquery 方法,而不是 hiddenbutton,调用了一个 ActionSupport 函数,并在其操作属性和 oncomplete 属性中指定了它的操作方法,就像我为按钮所做的那样。甚至它只调用了action方法,没有调用oncomplete方法
- 方法四:
一个。相同的 jquery 方法,而不是在 actionsupport 中调用 oncomplete 方法,而是从上述 if 条件本身中调用了 action support 方法和 oncomplete 方法:-
SaveandSend(); //Actionsupport method name which calls the controller's action method and creates the contact
CreateUser(); // Javascript method which clicks another button triggering the action method of that to create the user
即使在这个中,第二种方法也没有被调用。
JavaScript 代码:
function callSimulateUserSave() {
var mybtn = document.getElementById('{!$Component.theForm.SimulateUserSave}');
mybtn.click();
}
视觉力量代码:
<apex:actionFunction name="SetContinueProcess">
<apex:param name="ContinueProcess" value="ArgValue" assignTo="{!ContinueProcess}" />
</apex:actionFunction>
--commented -- <apex:actionFunction name="SaveandSend" action="{!SaveUserandSendEmail}" >
</apex:actionFunction> -- commented --
<apex:commandButton id="SaveUserAndSendEmail" value="Save and Send Activation Email" action="{!SaveUserandSendEmail}" rerender="junkpanel" oncomplete="if (j$('[id$=theForm]').validate().form() == true){callSimulateUserSave();}">
<apex:commandButton value="SimulateUserSave" id="SimulateUserSave" action="{!CreateUserRecord}" style="display:none;margin-left:5px;"/>
<apex:commandButton id="SaveUserAndSendEmailHidden" style="display:none;" value="Save and Send Activation Email" action="{!SaveUserandSendEmail}" rerender="junkpanel" oncomplete="callSimulateUserSave()" >
</apex:commandButton>
-- 我可能已经注释掉了一些代码,这些是我尝试过的不同方法/方法的代码,我试图实现解决方案