I'm using braintree.js with a custom form. For those not familiar, braintree.js does client side encryption of the form fields before submission to the server. On my end I get a bunch of gibberish (this is expected). If a form validation error occurs, I want the form displayed again alerting the user of the error but I don't want any of the fields pre-populated because the pre-populated values are now the client side encrypted gibberish. Is there a method of doing this in the _validate function?
1 Answer
I was able to unset the value from within the form validation function. In my case the element is named foo
and it only validates if it's set to bar
:
function mymodule_myform_validate($form, &$form_state) {
if ($form_state['input']['foo'] != 'bar') {
unset($form_state['complete form']['foo']['#value']);
form_error($form['foo'], 'foo is not equal to bar');
}
}
If the user enters anything but bar
in foo
, we set a form error and they presented with the form again without anything in the foo
field.
I'm not sure how/if the form state array is affected by, for example, the i18n or locale modules, but this should get you started.
-
This, whether it is correct or not, indeed gives me the results I want. Commented Nov 25, 2013 at 22:49