silverstripe-framework/forms/AutocompleteTextField.php
Sean Harvey 955d500a95 BUGFIX createTag() on FormField subclasses should use getTabIndex() instead of getTabIndexHTML() as createTag() is responsible for generating the HTML, and all we need is the tabindex value
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@62490 467b73ca-7a2a-4603-9d3b-597d59a354a9
2008-09-16 23:14:31 +00:00

51 lines
1.4 KiB
PHP

<?php
/**
* Autocompleting text field, using script.aculo.us
* @package forms
* @subpackage fields-formattedinput
*/
class AutocompleteTextField extends TextField {
protected $optionsURL;
function __construct($name, $title = null, $optionsURL, $value = "", $maxLength = null){
$this->optionsURL = $optionsURL;
parent::__construct($name, $title, $value, $maxLength);
}
function extraClass() {
return parent::extraClass() . " autocomplete";
}
function Field() {
// Requirements::javascript('sapphire/javascript/AutocompleteTextField.js');
$attributes = array(
'class' => "{$this->class} text " . $this->extraClass(),
'type' => 'text',
'id' => $this->id(),
'name' => $this->name,
'value' => $this->Value(),
'tabindex' => $this->getTabIndex(),
'size' => $this->maxLength ? min( $this->maxLength, 30 ) : 30
);
if($this->maxLength) $attributes['maxlength'] = $this->maxLength;
return $this->createTag('input', $attributes) . "<div id=\"" . $this->id() . "_Options\" class=\"autocompleteoptions\"></div>";
}
function FieldHolder() {
$holder = parent::FieldHolder();
$id = $this->id();
$holder .= <<<JS
<script type="text/javascript">
new Ajax.Autocompleter( '$id', '{$id}_Options', '{$this->optionsURL}', { afterUpdateElement : function(el) { if(el.onajaxupdate) { el.onajaxupdate(); } } } );
</script>
JS;
return $holder;
}
}
?>