Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

We're retiring the forums!

The SilverStripe forums have passed their heyday. They'll stick around, but will be read only. We'd encourage you to get involved in the community via the following channels instead:

Archive /

Our old forums are still available as a read-only archive.

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo

adding onclick to search form button


Go to End


4 Posts   3047 Views

Avatar
Nicolaas

Forum Moderator, 224 Posts

1 June 2007 at 10:07am

Hi Folk

I have written the following piece of code (from tutorial):
class Page_Controller extends ContentController {
function SearchForm() {
$searchText = isset($this->Query) ? $this->Query : 'Search';
$searchField = new TextField("Search", "", $searchText);
$fields = new FieldSet($searchField);
$resultAction = new FormAction("results","Go");
$actions = new FieldSet($resultAction);
return new SearchForm($this, "SearchForm", $fields, $actions);
}

I would like to add some JavaScript to the search field so that it automatically removes the word search onclick.

It seems like I can only do this in Sapphire or is there another way. I am not too keen to do it in Sapphire, because then it will get lost when I upgrade the site.

Any help greatly appreciated.

Nicolaas

Avatar
Sean

Forum Moderator, 922 Posts

1 June 2007 at 1:26pm

If you include the behaviour script as requirements for your class you can create a new js file with something like this:

eg. Page.php

class Page_Controller extends ContentController {

function init() {
Requirements::javascript('jsparty/behaviour.js');
Requirements::javascript('mysite/javascript/SearchForm.js');
parent::init();
}

}

And then, you can create your SearchForm.js file (Replace the # ID with the correct search input field ID if this one isn't correct:

Behaviour.register({
'#Search_Form_SearchForm_Search' : {
onfocus : function() {
if(this.value == 'Search') this.value = '';
},
onblur : function() {
if(this.value == '') this.value = 'Search';
}
}
});

Hope this helps!

Cheers,
Sean

Avatar
Nicolaas

Forum Moderator, 224 Posts

5 June 2007 at 12:46am

Hi Sean

Thank you for your reply.

I noticed that all my pages have the the following JS attached (added to my source code) by default:

<script type="text/javascript" src="jsparty/behaviour.js"></script>
<script type="text/javascript" src="jsparty/prototype.js"></script>
<script type="text/javascript" src="jsparty/scriptaculous/effects.js"></script>
<script type="text/javascript" src="cms/javascript/PageCommentInterface.js"></script>

Why would that be? It is not in the template/age.ss file and not in the code/page.php file, that is for sure....

The behaviour does not really seem to work either.... (but not JS errors).

Any suggestions?

Avatar
Sean

Forum Moderator, 922 Posts

5 June 2007 at 11:19am

Those files will have been included because you've enabled the page commenting. There's some javascript for ajax on the comments interface that depends on behaviour and prototype.

Cheers,
Sean