Segun yo Safari si soporta la validacion, pero no impide el submit.
Por lo que podrias hacer un workaround con javascript, algo como:
Código Javascript
:
Ver original// se obtiene el formulario y el campo a validar
var formulario = document.getElementsByTagName('form')[0],
campo = document.getElementsByTagName('input')[0];
// se quita validacion para que se comporte igual en todos los browser
formulario.noValidate = true;
// se agrega listener en el submit y se checa por campo valido y campo activo
formulario.addEventListener('submit', function(event) {
if (!campo.disabled && !event.target.checkValidity()) {
event.preventDefault();
alert('No Valido');
}else{
alert('formulario enviado');
}
}, false);
El required en el campo sigue siendo necesario, ya que es la forma de identificar si es valido con checkValidity.
Te dejo un fiddle como demo
http://jsfiddle.net/srLckfg3/
Puedes agregar el disabled al campo y probar que cuando esta inactivo se manda sin validar.