2012-06-25 5 views
1

Firefox 및 IE에서 제 양식이 정상적으로 작동합니다. onsubmit을 호출하면 js 함수가 호출되고 코드의 유효성이 검사되고 유효성 검사가 양호하면 양식이 제출됩니다.onsubmit 크롬에서 js 함수를 호출하지 않고 직접 양식을 제출하십시오.

그러나 크롬에서는 유효성 검사를 수행하지 않고 단순히 양식을 직접 제출합니다.

왜 그런지 모르겠지만 많은 검색을했지만 헛된 일이었습니다.

이 문제를 해결하는 데 큰 도움이됩니다.

양식 코드 :

<form name="myform" action="queryfeedback.php" method="post" onSubmit="return validateForm(myform);"> 
<label for="labelField_Name" id="idLabel_Name"></label> 
<input type="text" name="nameField_Name" id="idField_Name" placeholder="Enter your name here"/> 
<br /> 
<label for="labelField_EMail" id="idLabel_EMail"></label> 
<input name="nameField_EMail" type="text" id="idField_EMail" placeholder="Enter your E-Mail address here" /> 
<br /> 
<label for="labelField_Message" id="idLabel_Message"></label> 
<textarea name="nameField_Message" id="idField_Message" placeholder="Enter your message for us here"></textarea> 
<br /> 
<input type="Submit" name="nameSubmit" id="idButton_Submit" value="Submit" alt="Submit Button"/> 
</form> 

검증 코드 :

function validateForm(form) 
{ 
alert(form.nameField_Name.value); 
//alert(formValueEMail.value); 
//alert(formValueMessage.value); 
if(form.nameField_Name.value=='') 
{ 
    alert("Name field is required. Please fill it in."); 
    form.nameField_Name.focus(); 
    form.nameField_Name.select(); 
    return false; 
} 
if(form.nameField_Name.value=='Enter your name here') 
{ 
    alert("Name field is required. Please fill it in."); 
    form.nameField_Name.focus(); 
    form.nameField_Name.select(); 
    return false; 
} 
if(form.nameField_EMail.value=='') 
{ 
    alert("E-Mail Address field is required. Please fill it in."); 
    form.nameField_EMail.focus(); 
    form.nameField_EMail.select(); 
    return false; 
} 
if(form.nameField_EMail.value=='Enter your E-Mail address here') 
{ 
    alert("E-Mail Address field is required. Please fill it in."); 
    form.nameField_EMail.focus(); 
    form.nameField_EMail.select(); 
    return false; 
} 
//Checking for correct format of EMail address. 
var x=document.forms["myform"]["nameField_EMail"].value; 
var atpos=x.indexOf("@"); 
var dotpos=x.lastIndexOf("."); 
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) 
{ 
    alert("Not a valid e-mail address"); 
    return false; 
} 
if(form.nameField_Message.value=='') 
{ 
    alert("Message field is required. Please fill it in."); 
    form.nameField_Message.focus(); 
    form.nameField_Message.select(); 
    return false; 
} 
if(form.nameField_Message.value=='Enter your message for us here') 
{ 
    alert("Message field is required. Please fill it in."); 
    form.nameField_Message.focus(); 
    form.nameField_Message.select(); 
    return false; 
} 
return true; 
+0

http://jsfiddle.net/qrZ8a/3/은 아마도 당신의'validateForm' 기능은 어떤 이유로 크롬에서 완료하지 않고 죽어가, (예를 들어,이 오류로 인해 중지). 'validateForm'에 finall return 바로 전에'alert '를 넣어 프로그램 흐름이 유효한 입력에서 함수의 맨 아래에 도달했는지 확인하십시오. – apsillers

답변

0

이벤트 매개 변수에 전달하고 event.preventDefault()을 실행 해보십시오 그래서 그것은이 확인 될 때까지 양식을 제출 중지합니다.

+0

크롬에서 내 함수가 호출되는지 여부를 확인하기 위해 함수 내부의 첫 번째 행으로 경고를 표시하여 함수가 호출되는지 여부를 확인합니다. 이 경고는 절대 표시되지 않으므로 크롬에서 제출 버튼을 누르면 함수가 호출되지 않습니다. 내 함수의 첫 번째 줄인 경고가 발생하지 않아 함수가 호출되지 않을 때 디버깅하는 방법을 알지 못하기 때문에 이상합니다. – user1478475

+0

이상한 사유로 Chrome이 지원하지 않습니다. 이상한. – user1478475

0
  1. }으로 'validateForm'기능을 종료하지 않았습니다. 따라서 오류가 발생할 수 있습니다. 속성 이름
  2. 사용 onsubmit="return validateForm(this);" 참고이없는 낙타 케이스 onsubmit과 인수는 this
  3. validateForm는 전역 함수해야합니다.

작업 예 : 그것은`반환 제출을 중지 FALSE '결코 있도록

+0

디 당신이 제안한 단계, 전역 기능, 인수로 "이"를 사용하고 내 게시물 중괄호 괄호 끝에 놓쳤습니다. 그래서 원래 코드에있었습니다. 하지만 여전히 Chrome은 유효성 검사를 수행하지 않고 양식을 직접 제출합니다. 크롬 자체에 버그가있을 수 있는지 확실하지 않습니다. – user1478475

+0

나는 실례를 당신에게주었습니다. 그래도 여전히 작동하지 않는다면. 미안 해요. –

관련 문제