Forms accessibility - actions on buttons - forms

I have a Shopping Cart and for example there is a <button> that will trigger an action to add an item to the cart.
And my dilemma is:
- should I just have a standalone button with JS hook that sends a POST request to an API to add/update an item to cart?
- or should I wrap it in a <form> with hidden <input>s and then when there is no JS the button will be working because form will be submitted and when JS enabled I will submit the form via JS.
But when not using <form> with <input>s but just simple <button> the code would be cleaner.
And nowadays many pages need JS to be running.
Who switches JS off?
So should I bother to provide no-JS functionality at all?
Maybe I should bother only for public sector websites to provide it?
In my case JS would not be an enhancement but replacement for the default form functionality as you see.

In my opinion, it's perfectly acceptable to require javascript these days. It may even provide a better and more accessible user experience in some cases.
That being said, it's also very important to provide graceful fall-backs for clients that don't have javascript enabled for whatever reason. In the very minimum, there should be some sort of a warning or alert letting the user know that basic functionality won't work without Javascript.

Related

What portions of the marketo code snippet can change?

My company is using marketo forms, and we are generating the page from a content management system.
We'd like to keep the contribution experience as simple as possible and prevent the user from contributing actual <script> tags.
The API documentation says they will give you a block of code that looks like this:
<script src="//app-sjqe.marketo.com/js/forms2/js/forms2.js"></script>
<form id="mktoForm_621"></form>
<script>MktoForms2.loadForm("//app-sjqe.marketo.com", "718-GIV-198", 621);</script>
My question is, what portions of this code are subject to change?
I am sure the 3 part hypen separated string and the integer being passed in can change.
What about the app-sjqe.marketo.com address?
The 3-part string is your Marketo instance ID, and shouldn't really change. The other integer is the form ID, which definitely will change depending on what form you want to embed.
The other thing that you may want to consider, is the other configurable options that you can send along with the form embed. For example, in the module that I have made for my CMS, I let the user put an optional 'thank-you' page URL, to redirect the form to after submission, and also a checkbox to optionally open the form in a lightbox on page load.
The simple module I made is for the Sitefinity CMS - happy to share code with you if that helps!

Angularjs default action form submit

My angular application needs to submit a form to a vendor. They then redirect the user to a page that I specified earlier in the process.
So I want standard, non-angular html form submit behaviour.
The documentation (details below) makes it sound like all I need to do is add an action attribute to my form element. I have tried this and it does not work.
Has anyone used this functionality in angular? Is there another step that I am missing?
The relevant section of the documentation at https://docs.angularjs.org/api/ng/directive/form is:
Submitting a form and preventing the default action
Since the role of forms in client-side Angular applications is different than in classical roundtrip apps, it is desirable for the browser not to translate the form submission into a full page reload that sends the data to the server. Instead some javascript logic should be triggered to handle the form submission in an application-specific way.
For this reason, Angular prevents the default action (form submission to the server) unless the element has an action attribute specified.
Angular does that. When you provide an action on the form, it should do exactly what you're trying to do (do a javascript thing, then submit the form).
Here is a plunk
In the plunk, you can see the $scope.submitted say 'submitted' just before the form submission kicks the page over to the submitted.html

check user availability in forms in jsp

I have a jsp form which takes in user details. On submit button it goes to a jsp page where the details are entered into the database. But before that I would like to check if the username is available as soon as the user clicks the check availability button. How can this be done?
2 ways:
Just redisplay the same page after submitting the form wherein you conditionally display the validation message. This is rather trivial and already covered in the Hello World example in our Servlets wiki page.
Use Ajax to send an asynchronous HTTP request and manipulate the HTML DOM based on the response of the request. This requires a bit more in depth understanding of how websites really work and what JavaScript is. You can find some concrete examples in How to use Servlets and Ajax?
Use AJAX(Asynchronous Javascript and Xml). Its the best web2.0 technology. You can manipulate DOM based on the answer from server

using form buttons for spamproof email-addresses

I have been looking at some methods for spamproof email methods here. I'd like to propose a more simple approach: Since I need a couple of different email addresses I considered just using a selectbox with JS or serverside redirect, as per examples on here.
Because google doesn't spider forms (dixit Matt Cutts), and spam-harvester script don't either (I think????) this would make sense to do.
I would love to be able to do this without using a script. So why not use one form per email?
<form action="mailto:test#domain.tld" method="get">
<input type="submit" value="test#domain.tld"/>
</form>
It seems the button text can be copied but not pasted, so that's a disadvantage.
Is this approach any good? or any other recommendations?
A robot uses the text of the page to get the email. It does not care if that text is in a button or within the body so using a button will not help.
Outside of using javascript, the only solution I know of would be written text, an image or Flash.
Create an image with your email or write out the email like: "test at domain dot tld"
Flash could provide you with a more secure (but not 100%) way of allowing people to click on an email but would not work on iPhone browsers and those that do not have the plug-in.
Another way is to use a simple captcha to before displaying the email in the PHP code.
Email: (1+2 = ?) then test#domain.tld
Because:
The email address is still in the page, and thus easily harvestable
mailto: URIs as form actions often fail
The reason server side form handlers stop email addresses being harvested is because the email address is not exposed to the user.

Submit multiple forms to various iFrames

due to security and implementation reasons that are out of the scope of this post, I need to submit multiple forms in a single page to different iFrames (one iFrame for each form). I can't use jQuery nor AJAX, it has to be done via:
<script>
document.Form1.submit();
</script>
The problem is, after I submit the first form (everything goes well), I can't submit the other three forms. I'm guessing only one form.submit() call is allowed per page. Is there a way around this?? I have no problem with submitting all the forms at the same time.
Ps: I'm forwarding the post request to the iframe using the target param of the form. Like this:
<form id='Form1' name='Form1' action='https://www.xxx.com/index.php' method='post' target='iFrame1'>
Thanks a lot in advance for your time and help. Best regards,
You can also have multiple forms and have each form submit to a separate iFrame.