Since Input is a DialogInput, it seemed reasonable to peek into Input's structure to understand how the focus is set. After removing the ReadProtected attribute I've realized that there is no neat way to do it, as WRI itself has done the reposition of the focus via successive SelectionMove calls.
This example below is not the original but a modified version, as the original Input definition only includes one InputField but no other expressions (like a Button). Note that it is not documented that you can use Initialization in dialogs, moreover it is colored red by the syntax highlighter to suggest an invalid option.
DialogInput[{InputField["", String], Button["Ok", DialogReturn[]]},
Initialization :> (FrontEndExecute[{
FrontEnd`SelectionMove[#1, Before, Notebook,
AutoScroll -> False],
FrontEnd`SelectionMove[#1, Next, Cell, 2, AutoScroll -> False],
FrontEnd`SelectionMove[#1, Previous, CellContents,
AutoScroll -> False],
FrontEnd`FrontEndToken[#1, "MovePreviousPlaceHolder"]
}] &), ShowCellBracket -> True, Selectable -> True]