Это - сценарий, который я использую для проверки формы:
<script language="JavaScript">
function formCheck(formobj){
var fieldRequired = Array("Name", "Email", "Phone", "comments");
var fieldDescription = Array("Name", "Email", "Phone", "Comments");
var alertMsg = "Please complete the following fields:\n";
var l_Msg = alertMsg.length;
for (var i = 0; i < fieldRequired.length; i++){
var obj = formobj.elements[fieldRequired[i]];
if (obj){
switch(obj.type){
case "select-one":
if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
alertMsg += " - " + fieldDescription[i] + "\n";
}
break;
case "select-multiple":
if (obj.selectedIndex == -1){
alertMsg += " - " + fieldDescription[i] + "\n";
}
break;
case "text":
case "textarea":
if (obj.value == "" || obj.value == null){
alertMsg += " - " + fieldDescription[i] + "\n";
}
break;
default:
}
if (obj.type == undefined){
var blnchecked = false;
for (var j = 0; j < obj.length; j++){
if (obj[j].checked){
blnchecked = true;
}
}
if (!blnchecked){
alertMsg += " - " + fieldDescription[i] + "\n";
}
}
}
}
if (alertMsg.length == l_Msg){
return true;
}else{
alert(alertMsg);
return false;
}
}
// -->
</script>
<form onsubmit="return formCheck(this);" action="/capture.weblead" method="post">
First Name: <input type=text name="FirstName" size="25"><br>
Last Name: <input type=text name="LastName" size="25"><br>
<input type=submit value="Submit Form">
</form>
Это работает отлично кроме него, не проверяет для РЕАЛЬНОГО адреса электронной почты. Как изменить эту форму так, чтобы она сделала?
Сценарий не может содержать долларовые символы иначе Tomcat (моя серверная среда) катастрофические отказы.
Я бы посоветовал вам использовать jQuery и подключаемый модуль проверки:
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
Он гибкий, надежный и простой в использовании.
Это быстрое и грязное решение. Измените значение переменной emailRegexp
в соответствии с вашими потребностями. Здесь уже есть несколько примеров. Как отметил Pointy, в целом лучше иметь ложноположительные результаты, чем ложноотрицательные.
function formCheck(formobj){
var fieldRequired = Array("Name", "Email", "Phone", "comments");
var fieldDescription = Array("Name", "Email", "Phone", "Comments");
var alertMsg = "Please complete the following fields:\n";
var emailRegexp =/@/;
var l_Msg = alertMsg.length;
for (var i = 0; i < fieldRequired.length; i++){
var obj = formobj.elements[fieldRequired[i]];
if (obj){
switch(obj.type){
case "select-one":
if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
alertMsg += " - " + fieldDescription[i] + "\n";
}
break;
case "select-multiple":
if (obj.selectedIndex == -1){
alertMsg += " - " + fieldDescription[i] + "\n";
}
break;
case "text":
case "textarea":
if ( obj.value == "" ||
obj.value == null ||
( fieldRequired[i] == "Email" && !obj.value.match(emailRegexp) ))
{
alertMsg += " - " + fieldDescription[i] + "\n";
}
break;
default:
}
if (obj.type == undefined){
var blnchecked = false;
for (var j = 0; j < obj.length; j++){
if (obj[j].checked){
blnchecked = true;
}
}
if (!blnchecked){
alertMsg += " - " + fieldDescription[i] + "\n";
}
}
}
}
if (alertMsg.length == l_Msg){
return true;
}else{
alert(alertMsg);
return false;
}
}