2011-01-19 4 views
0

J'ai un formulaire zend qui a une boîte de sélection avec plus de 1000 options id-> nom triées par ordre alphabétique. Une fois rendu et vu dans un navigateur, si vous tapez Ch il va tout à fait à cette option;Définir la valeur 'sélectionnée' dans la liste déroulante de la boîte de sélection - basée sur la première lettre

Est-il possible de définir la valeur à sélectionner via les premières lettres après l'initialisation du formulaire? En d'autres termes $form->getElement('name')->setSelected('Ch') ou similaire;

Je sais que je peux avec setValue(34) définir le nom à sélectionner qui a l'ID 34.

Répondre

1

Juste écrit le code moi

class My_Form_Element_Select extends Zend_Form_Element_Select{ 
/** 
* Sets the the first option to start with certain letters to be selected 
* @param string $string The first few letters to search for 
*/ 
public function setSelected($string){ 
    $string = strtolower($string); 
    $options = $this->_getMultiOptions(); 
    $length = strlen($string); 
    foreach($options as $value => $option){ 
     if($string == strtolower(substr($option,0,$length))){ 
      $this->setValue($value); 
      break; 
     } 
    } 
    return $this; 
} 
Questions connexes