Presently you can set defaults for form fields only to constant values (with some exceptions, granted). It is not possible to set the defaults to dynamic data, e.g. results from template calls or from {{#ask:...}}.
If there is preloaded data, you can not force it to default values, at all.

An id can be used only once in any document, thus only one block of defaults is considered.

The inner divs must have class="sfdefault".

Checkboxes or listbox entries, which are already set, will never be unset by the script.

For text, buttons, textarea and all date input types you can set class="sfdefault preserve" to preserve values that are already set, e.g. from a preload. For date fields, the preserve-setting from the day-component is used for all other components (month, year, ...) as well, i.e. there is no use in setting (or not setting) preserve for the month. You can not set preserve for radio buttons, checkbox, checkboxes or listbox.

You can set the default value for "multiple" templates by including "[num]" between the template name and the field name, e.g. <div class="sfdefault" title="templatename[num][fieldname]" >default value</div>. And yes, that is meant literally, you cannot replace num by some number. I.e. you can not set different defaults for different incarnations of the multiple template.

This tip works for the standard inputs, too. You can even set the text on buttons this way, if you so desire. Use the fieldnames below.

standard input

field name

save

wpSave

preview

wpPreview

changes

wpDiff

summary

wpSummary

minor edit

wpMinoredit

watch

wpWatchthis

cancel

That's a link, not an input, sorry.

free text

free_text

And if all that div-stuff is too unwieldy for you, then just stick it in a template. That's what this tip is all about, after all. ;-)