2013-05-15 9 views
1
<html> 
<head> 
</head> 
<body> 
<form class="form-horizontal cmxform" id="validateForm" method="get" action="../../course_controller" autocomplete="off"> 


<input type="text" id="course_name" name="course_name" placeholder="Enter Course Name..." class="row-fluid" required onkeyup="javaScript:validate_course_name();"> 
<label id="course_name_info" style="color:rgba(255,255,255,0.6);font-size:13px"> 
</label> 



<button type="submit" name="user_action" value="add" class="btn btn-primary" onClick="javaScript:validate();" >Save</button> 
<button type="reset" class="btn btn-secondary">Cancel</button> 



</form> 
<script type="text/javascript"> 
/**** Specific JS for this page ****/ 

//Validation things 




function validate_course_name(){ 

var TCode = document.getElementById('course_name').value; 

if(/[^a-zA-Z1-9 _-]/.test(TCode)) { 

course_name_info.innerHTML="Please Enter Only Alphanumeric or _,-,' ' "; 
return false; 
} 
else 
{ 
course_name_info.innerHTML=" "; 
return true; 
} 


} 
function validate(){ 


validate_course_name(); 

} 
</script> 
</body> 
</html> 

그래서이 코드는 ... 하나의 필드에 알파 숫자 유효성 검사를 적용하고 있지만 일부 다른 문자처럼 잘못된 입력을 제공하더라도 양식을 제출하는 위치가 잘못되었습니다. 나는이 웹에 매우 익숙하므로 어떤 도움을 주셔서 감사합니다 :)유효성 검사가 작동하지 않습니다.

+1

마찬가지로 @ Duffmaster33은 단순히 onClick을 javascript로 변경한다고 말했습니다. return validate_course_name(); – Horst

+0

그 당근은 왼쪽 앵커라고 생각합니까? 문자 집합 대괄호 밖으로 나가는 것 같아요. 또한 앵커를 떠난 경우 왜 올바른 앵커가 아닌가? 문자 세트는 하나의 문자와 만 일치합니다. 적어도 하나는 +를 원합니다. '/^[어쨌든] + $ /'어쩌면? – jpsimons

+0

@fattomkh가 작동하지 않습니다 – user2137186

답변

2

에 검증을 이동 할 수 있습니다이

function validate(){ 
    return validate_course_name(); 
} 

처럼 보일 것이다. 첫째, 결과를 반환하지 않습니다. 따라서 함수가 false가 되더라도 폼에 반환되지 않으므로 양식이 기쁜 방식으로 진행됩니다. 문제를 해결하려면 양식 태그에 onsubmit을 추가하거나 onsubmit 이벤트를 양식에 더 잘 첨부 할 수 있습니다.

onsubmit="return validate();" 

둘째, 당신은 단지 다른 함수에서 함수를 호출, 하나 개의 기능을 필요로 여기에 필요하지 않습니다, 어려움의 추가 수준의 결과가 어떤 것, 래퍼 함수에 결과를 반환해야하기 때문에 그 결과를 폼에 반환해야합니다. http://jsfiddle.net/duffmaster33/nCKhH/

+0

그 validate 함수에서 하나 이상의 함수를 호출해야합니다 ... 난 그냥 간단하게 만들었습니다 – user2137186

1

validate() 함수는 유효성 검사 결과를 반환해야합니다. 현재 validate_course_name의 결과는 무시됩니다. 즉, 그것은 또한 당신이 몇 가지 문제가 여기에있다

<form onsubmit="return validate()" ... 
+0

잘 검증 함수는 결과를 반환하는 validate_course_name()을 호출합니다. – user2137186

+0

죄송합니다. 명확하지 않았습니다. 답변에 몇 가지 예제 코드를 추가했습니다. – Bemmu

0

글꼴이되지 않도록 당신은에서 getElementById

document.getElementById('course_name_info').innerHTML="Please Enter Only Alphanumeric or _,-,' ' "; 

와 course_name_info 포장하고 라벨의 스타일을 변경해야합니다 여기

//Validation things 
function validate() { 
    var TCode = document.getElementById('course_name').value; 
    if (/[^a-zA-Z1-9 _-]/.test(TCode)) { 
     course_name_info.innerHTML = "Please Enter Only Alphanumeric or _,-,' ' "; 
     return false; 
    } else { 
     course_name_info.innerHTML = " "; 
     return true; 
    } 
} 

은 예를의 작업 바이올린입니다 흰색 배경에 흰색.

희망을 고치는 호프.

+0

그것의 작동하지 않습니다 ... – user2137186

+0

보십시오 : http://plnkr.co/edit/gTvvuPtKFDa4jTaZ6y0m 전화 번호, _ 또는 -을 (를) 수락 했으므로 *를 사용하여 오류 메시지를 받았습니다. – Kalpers

관련 문제