Validación de nombre de Javascript

Tengo una función javascript escrita para validar un campo en mi formulario. Se supone que esta función asegura que el campo no esté vacío, no exceda el límite de 35 caracteres y solo contiene caracteres alfabéticos y un guión (-). Tenía un código para asegurarme de que el campo no estuviera vacío y que no excediera los 35 caracteres, lo que funcionó bien, pero agregué un código para validar el campo a los caracteres utilizables y lo probé dejando el campo vacío para asegurarme de que aún funcionaba pero cuando presioné el botón "Enviar", la función no pareció validarse en absoluto, no me dio una alerta y simplemente la envié. Aquí está mi código:

function validateFamily()
{
var family=document.getElementById('family');
var stringf = document.getElementById('family').value;
if (family.value=="")
    {
     alert("Family name must be filled out");
     return false;
    }
else if (document.getElementById('family').value.length > 35)
    {
        alert("Family name cannot be more than 35 characters");
        return false;
    }
else if (/[^a-zA-Z\-\]/.test( stringf ))
    {
        alert("Family name can only contain alphanumeric characters and hypehns(-)")
        return false;
    }
    return true;
}

<form name="eoiform" method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>" id="eoi" onsubmit="return validateFamily() && validateGiven() && validateMaleFemale() && validDate() && validateAddress() && validatePost() && validateParent() && validateWork() && validateHome() && validateMob() && validateCheckBoxes();">

<b>Student's Family Name</b> 
<br>
<input type="text" id="family" name="family" /><?php echo $strmsgf; ?>

<input type="submit" name="submit" id="submit" value="submit" />

</form>

¿Podría alguien enseñarme cómo arreglar mi código?

Respuestas a la pregunta(3)

Su respuesta a la pregunta