You could create a custom form control based on the original Text Box form control (~\CMS\CMSFormControls\Basic\TextBoxControl.ascx.cs). In the custom one, you can add a new placeholder attribute to the text box:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
TextBox.Attributes.Add("placeholder", "Enter a value");
}
You can add it to the ASCX directly, but doing it in code gives you the opportunity to set it dynamically, e.g. based on FieldInfo.