How can I add autocomplete="off" to a form field?
$fields->push( new TextField( "Your Phone") );
This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.
Please use forum.silverstripe.org for any new questions
(announcement).
The forum archive will stick around, but will be read only.
You can also use our Slack channel
or StackOverflow to ask for help.
Check out our community overview for more options to contribute.
How can I add autocomplete="off" to a form field?
$fields->push( new TextField( "Your Phone") );
Afaik the only way to do that is extending the (Text)Field. Something like
class MyAutocompleteTextField extends TextField {
function Field() {
$attributes = array(
'type' => 'text',
'class' => 'text' . ($this->extraClass() ? $this->extraClass() : ''),
'id' => $this->id(),
'name' => $this->Name(),
'value' => $this->Value(),
'tabindex' => $this->getTabIndex(),
'maxlength' => ($this->maxLength) ? $this->maxLength : null,
'size' => ($this->maxLength) ? min( $this->maxLength, 30 ) : null
);
if($this->disabled) $attributes['disabled'] = 'disabled';
// add the new attribute here: <==========
$attributes['autocomplete'] = 'off';
return $this->createTag('input', $attributes);
}
}
Then
$fields->push( new MyAutocompleteTextField( "Your Phone") );
On a similar topic, what's the best way to add autocomplete = "off" to the password field on the Login page?
Or all password fields for that matter.
I don't want to hack the core.
This is how I've done it, not the greatest but works...
_config.php
Object::useCustomClass('MemberLoginForm','CustomLoginForm');
CustomLoginForm.php
class CustomLoginForm extends MemberLoginForm {
public function __construct($controller, $name, $fields = null, $actions = null, $checkCurrentUser = true) {
parent::__construct($controller, $name, $fields, $actions);
Requirements::customScript(<<<JS
jQuery(document).ready(function(){
jQuery('#CustomLoginForm_LoginForm_Password').attr('autocomplete','off');
});
JS
);
}
}