AEM dialog submit event handler execute for a specific dialog - aem

I am trying to implement dialog submit event listener for a cq:dialog touchui.
JS dialog submit event listener getting executed for all dialog submits.
I am trying to see if I can bind event listener to a specific dialog - in a way
$(document).on("click", "**customCSSClass**.cq-dialog-submit", function(e) {
//event handler for submit
});
AEM 6.3 sp2 is the version. Purpose is to to show hide some dialog fields based on drop down selection and validate value entered in dialog fields. Could someone tell me the attribute /property that I need to add to have a class name ? A small example code would help.
any help?
Thanks,
Sri

Related

Unable to hide content snippet on form submit in portals. Displays along with the success message after form submission

I am working on partner portal in dynamics 365 portals.
I included a content snippet(qrcode scanner) in the 'upload result' web page. This web page also has an entity form placed in it after the content snippet.
When I load the web page, the content snippet and the form display on the web page(as expected).
After filling the required details and submitting the form, the content snippet doesn't hide on form submission.
It still is displayed on the page along with the success message.
I added the following code in the Additional settings of the Entity form of the web page,
$(document).ready(function(){
$("#InsertButton").click(function(){ // onclick submit button
$('#snippet-scanner').parent().hide(); // hide the content snippet
});
});
it hides as soon as we click the submit button but then re-appears along with the success message.
Can you please suggest me a way to hide or remove the content snippet from the web page when the success message is displayed, after the form is submitted.
Your problem here is that the page reload on form submit. I see 3 possible solutions.
Quickfix - check if form exists on page load and hide content snippet dependently.
$(document).ready(function() {
if (!$(".entity-form").length) {
$("#snippet-scanner").hide();
}
})
My personal favourite - change success of form to redirect to the same page, append a custom query string such as success=true then use liquid to only render the content snippet and form if the success doesn't equal true (you would need to display your own success message)
Prevent default action of the form and submit it yourself with javscript. I have done this before and it's a bit fiddly, probably wouldn't recommend for a simple use case like this.

Track form conversions confirmation page URL is the same as the form

I'm trying to track form completions on a page where the form's URL is the same as the confirmation page.
Form Page
Does anybody know if this can be done with Google Tag Manager/Google Analytics please?
Completion page
Simply tracking clicks of the Submit button will result in false positives because sometimes people will not type the security code correctly.
Is there a tracking code of some sort that can be added to the confirmation page, so that each time it loads the count goes up one?
I'm grateful of any help you can provide.
Thanks!
You can use the built-in visibility trigger - e.g. as soon as a link element with the link back to the homepage becomes visible you let the trigger fire. Specifics depend on the CSS id or class for that link (if any, else you'd have to test the click text).
In the visibility trigger you might have to enable "listen for DOM changes" if the confirmation message is loaded per Ajax (as opposed to just have their CSS display property set to 'none'.

TYPO3 ods ajaxmail with directmail

I need to change the newsletter scubscription status by a checkbox. I need to activate newsletter subscrpition of logged in user with a checkbox. How can it is possible?
depending on your intention two options come to mind:
build a form (or only checkbox) with an eventhandler which acts on click:
the page could reload:
just send the form, change the mode of subscription, redisplay the page with changed status
the page should stay: do an AJAX call to change the status, return new status (form) to display
the user could be accessed from the session data.

Java Wicket - Prevent Form From Creating New Tab When Exception Occurs

I am creating reports using Jasper right now and almost everything goes well. We set it in a way that if the user will preview a report, the report(pdf) will be shown on a new Tab. The problem is if an error occurs, a new Tab would still be opened instead of just showing the Feedback Panel on the original page.
How can the form be setup in such a way that the feedback panel will be shown on the original page instead of the newly opened Tab?
Form<?> form = new Form<Void>("form");
form.add(new AttributeAppender("target", Model.of("_blank")));
SubmitLink view= new SubmitLink("view") {
#Override
public void onSubmit() {
//code inside a try-catch to generate the report using Jasper}
};
CptiDownloadButton download = new CptiDownloadButton("download", new AbstractReadOnlyModel<File>(){
//CptiDownloadButton extends SubmitLink button and is a modification of Mr Ivaynberg's DownloadLink
};
<form wicket:id="form">
<input type="button" wicket:message="value:search"/>
<input type="button" wicket:message="value:download"/>
</form>
Thanks in advance to anyone who'll answer. ^^
If you do any form submission to a form with target="_blank", the browser will automatically open a new tab to render the response from the form submission. It is the intended behavior, and trying to prevent it is breaking the standard target="_blank" behavior. I guess what I'm saying is you should really think whether breaking this standard behavior is something you want to do.
If it is, here's how I would go about it. Warning: ain't gonna be clean.
Use Ajax (AjaxButton or AjaxFormSubmitBehavior) to submit the form. Since it is done via ajax, the browser will not invoke default form submission behavior, hence not opening a new tab.
Ajax then invokes the form processing. On error, re-render the feedback panel and return. On success append JavaScript to invoke the default form submission on the respective link when the request returns. This will perform standard form submission behavior, hence performing the target="_blank". It will once more validate the form, but then it will proceed to perform the originally intended behavior.
The way you invoke the default form submission on the link you desire can be done in a few different ways and is entirely up to you. As a quick and dirty way you can hide the buttons that you have right now (visually) and perform javascript to click the button. Or you can use a hidden form field to identify which button has been clicked if you don't want ugly hidden clicking behavior.
You'll have to do a form (Ajax)-submit without target, and then initiate the actual download after checking possible errors.
See https://cwiki.apache.org/confluence/display/WICKET/AJAX+update+and+file+download+in+one+blow for an example with Ajax and an attachment content disposition.

Event in HTML5 form raised before validation of input fields.

Is there any event raised before the validation of fields in an HTML5 form and before the submit of this form?
AFAIK, the submit event is raised just before the submit of the form, but after the validation step, so this one fires too late for me.
Update: I have a textarea with the "required" property, and if the user has JS I want to substitute it by an HTML editor. The HTML editor syncs its contents with the textarea on submit (after the validation step), so for the browser the textarea is always empty. That's why I'm asking for an event fired before the validation. Any other way answer that solves this problem will be accepted.
No, there is no event which fires before validation happens. There is only the invalid event, which is fired after validation of an invalid field, but before the validation UI is shown (preventing the default prevents showing the browser validation UI).
In case you want to sync two fields, you have to use two events. The first is DOMContentReady and the second is the change event.
Additional info: if you hide the invalid field element, the browser can not show the validation message to the user. You can workaround this with the following code (note this assumes that you are using jQuery 1.6x and a special structure):
$('textarea.wysiwyg').bind('invalid', function(e){
//remove validation bubble
e.preventDefault();
//implement your own validation UI
$(this).next('div.wysiwyg').after('<p class="error">'+ $.prop(this, 'validationMessage') +'</p>');
});