2015-03-11 2 views
1

Надеюсь, вы можете помочь, я делаю HTML-форму, которая использует проверку JavaScript. Валидация формы работает на имя, фамилию и город. Однако по какой-то причине он не работает на линии Frist или второй строке адреса, а также в почтовом индексе, и я не могу сказать, почему. Любая помощь будет оценена по достоинству. Ниже приведены HTML и JavaScript.Проверка формы JavaScript, не работающая со всеми полями HTML

HTML:

<!DOCTYPE html> 
<html> 
<head> 
<Title> In Class Test 5 </title> 
<script src="RegisterCustomerValidation.js"></script> 

<body> 
<h1> Working out the difference between today and your selected date </h1> 

    <Form name="MyForm" > 

<br> Please enter your first name: 
<input type="text" id="Fname"> <br>   

Please enter your surname: 
<input type="text" id="Sname"> <br> 

Please enter your first line of address 
<input type="text" id="FLINE"> <br> 

Please enter your Second line of address 
<input type="text" id="SLINE"> <br> 

Please enter your City or Town 
<input type="text" id="Town"> <br> 

Please enter your postcode 
<input type="text" id="Pcode"> <br> 

Please enter a email: 
<input type="text" id="Email" size=15><br> 

Please enter your home number: 
<input type="text" id="Hnumber" size=15><br> 

Please enter your mobile number  
<input type="text" id="Mnumber" size=15><br> 

<button type="button" onclick="return f1()">Submit</button> 
    </Form> 



</body> 

</html> 

Мои JavaScript:

function checkFName() { 

var Fname = document.forms["MyForm"]["Fname"].value; 
if (Fname == null || Fname == "") { 
    alert("Name must be filled out"); 
    document.MyForm.Fname.focus(); 
    document.getElementById("Fname").style.border = '2px solid red'; 
    return true; 
} 
} 

function checkSName() { 
var Sname = document.forms["MyForm"]["Sname"].value; 
if (Sname == null || Sname == "") { 
    alert("Surname must be filled out"); 
    document.MyForm.Sname.focus(); 
    document.getElementById("Sname").style.border = '2px solid red'; 
    return true; 
} 
} 

function checkTown() { 
var Town = document.forms["MyForm"]["Town"].value; 
if (Town == null || Town == "") { 
    alert("Town must be filled out"); 
    document.MyForm.Town.focus(); 
    document.getElementById("Town").style.border = '2px solid red'; 
    return true; 
} 
} 

function Pcode() { 
var Pcode = document.forms["MyForm"]["Pcode"].value; 
if (Pcode == null || Pcode == "") { 
    alert("Town must be filled out"); 
    document.MyForm.Pcode.focus(); 
    document.getElementById("Pcode").style.border = '2px solid red'; 
    return true; 
} 
} 
function checkFLA() { 
var FLA = document.forms["MyForm"]["FLINE"].value; 
if (FLA == null || FLA == "") { 
    alert("First line of address must be filled out"); 
    document.MyForm.FLINE.focus(); 
    document.getElementById("FLINE").style.border = '2px solid red'; 
    return true; 
} 
} 

function checkSLA() { 
var SLA = document.forms["MyForm"]["SLINE"].value; 
if (SLA == null || SLA == "") { 
    alert("Second line of address must be filled out"); 
    document.MyForm.SLINE.focus(); 
    document.getElementById("SLINE").style.border = '2px solid red'; 
    return true; 
} 
} 

function f1() { 

alert("hello world"); 
if (checkFName(Fname)) { 
    alert("First name must be filled out"); 
    document.MyForm.Fname.focus(); 
    document.getElementById("Fname").style.border = '2px solid red'; 
} 


if (checkSName(Sname)) { 
    alert("Surname must be filled out"); 
    document.MyForm.Sname.focus(); 
    document.getElementById("Sname").style.border = '2px solid red'; 

} 


if (checkTown(Town)) { 
    alert("Town must be filled out"); 
    document.MyForm.Town.focus(); 
    document.getElementById("Town").style.border = '2px solid red'; 

} 

if (checkPcode(Pcode)) { 
    alert("Surname must be filled out"); 
    document.MyForm.Pcode.focus(); 
    document.getElementById("Pcode").style.border = '2px solid red'; 

} 
if (checkFLA(FLA)) { 
    alert("First line of address must be filled out"); 
    document.MyForm.FLINE.focus(); 
    document.getElementById("FLINE").style.border = '2px solid red'; 

} 
if (checkSLA(SLA)) { 
    alert("Second line of address must be filled out"); 
    document.MyForm.SLINE.focus(); 
    document.getElementById("SLINE").style.border = '2px solid red'; 

} 


} 
+0

Возможно, вам стоит взглянуть на руководство по стилю JavaScript в AirBnB. https://github.com/airbnb/javascript – whoacowboy

+0

@whoacowboy, как это помогает OP? –

+0

@ Джорди см. Мой ответ ниже. – whoacowboy

ответ

1

Похоже, у вас есть несколько ошибок вокруг чувствительности к регистру. JavaScript - это язык, чувствительный к регистру, поэтому Fname и fname совершенно разные.

Это хорошая практика, чтобы принять решение об именовании и придерживаться его.

camelCase - хорошая идея хотя я просто положил все на нижний регистр для целесообразности.

AirBnB имеет style guide, что является хорошим местом, чтобы получить представление о более чистых способах написания кода.

Мне также очень нравится JavaScript: Хорошие детали от Douglas Crockford.

HTML

<h1> Working out the difference between today and your selected date </h1> 

<form name="myForm" id="myForm" action=""> 
    <br>Please enter your first name: 
    <input type="text" id="fName" /> 
    <br>Please enter your surname: 
    <input type="text" id="sName" /> 
    <br>Please enter your first line of address 
    <input type="text" id="fLine" /> 
    <br>Please enter your Second line of address 
    <input type="text" id="sLine" /> 
    <br>Please enter your City or Town 
    <input type="text" id="town" /> 
    <br>Please enter your postcode 
    <input type="text" id="pCode" /> 
    <br>Please enter a email: 
    <input type="text" id="email" size="15" /> 
    <br>Please enter your home number: 
    <input type="text" id="hNumber" size="15" /> 
    <br>Please enter your mobile number 
    <input type="text" id="mNumber" size="15" /> 
    <br> 
    <button type="button" id="submitButton">Submit</button> 
</form> 

JavaScript

var form1 = document.forms["myForm"]; 
var submitButton = document.getElementById("submitButton"); 

function validateForm() { 
    checkTextField('fName', "Name must be filled out"); 
    checkTextField('sName', "Surname must be filled out"); 
    checkTextField('fLine', "First line of address"); 
    checkTextField('sLine', "Second line of address"); 
    checkTextField('town', "Town must be filled out"); 
    checkTextField('pCode', "Postal Code must be filled out"); 
    checkTextField('email', "Email must be filled out"); 
    checkTextField('hNumber', "Home number must be filled out"); 
    checkTextField('mNumber', "Mobile number must be filled out"); 
} 

function checkTextField(fieldName, message) { 
     field = form1[fieldName]; 
    if (field.value === null || field.value === "") { 
     alert(message); 
     field.focus(); 
     field.style.border = '2px solid red'; 
    } 
} 

See JSFiddle

EDIT Обновленный код и образец верблюжьего (это хорошая идея).

2

Я нашел его. Ваша программа задыхается от почтового кода.

Вы проверяете -> если (checkPcode (Pcode))

Но правильное название функции Pcode не checkPcode -> функция Pcode() {

Edit. Да, я только что установил FLA. Не передавайте никаких аргументов, то есть нет FLA, только если (checkFLA()) - я думаю, что он должен работать.

+0

Двойная проверка всех других функций и переменных. Почтовый код работает сейчас, но FLA нет. Также проверьте свои предупреждения, например. checkPcode alert указывает, что фамилия должна быть заполнена. –

+0

Спасибо, что помогло, есть ли у вас какие-либо идеи, почему FLA и SLA не работают? – TheHadimo

+0

Извините, я также удалил аргумент FLA, потому что это действительно не нужно - я думаю, что проблема была не в изменении имен. –

0

Есть несколько ошибок, которые вы делаете в JavaScript-код

  1. вызова, как checkPcode(Pcode) фактического имени функции Pcode()
  2. нет необходимости добавлять FLA в качестве параметра в if (checkFLA(FLA)) использования if (checkFLA())
  3. нет необходимости добавлять SLA как параметр в if (checkSLA(SLA)if (checkSLA())
Смежные вопросы