form 전송 onsubmit 함수 2개 사용하는 법
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 7.2 |
구글링해보면
onsubmit="return !!(procFilter(this, insert_comment) & bad_word_check());"
이런 형식으로 가능하다고 해서 해보면
bad_word_check() 함수가 실행까지는 됩니다.(경고창 까지 뜹니다.)
그런데 실행결과 return false 가 무시되어 form 전송이 되어버립니다.
onsubmit="return bad_word_check()"
단독으로 사용하면 알림창이 뜨고 폼전송 중지까지 잘 되는데요.
라이믹스에서 기본적으로 사용되는 함수가 있어서 추가해서 사용해야 하는데 위 형식에 오류가 있나요?
두 함수 순서를 바꿔도 결과는 동일하네요.
댓글 9
찾아보니 일반적인 경우 onsubmit에서는 &가 맞습니다.
실제 문제는 procFilter는 무조건 false를 리턴한다는 점에 있습니다.(실제 실행하는건 인자 두번째 insert_comment입니다) 즉 폼의 onsubmit를 무력화하고 자체 submit를 실행할 목적으로 있는 함수가 procFilter이므로 아무리 추가 조건을 붙여도 폼이 전송되는 것입니다.
순서를 바꿔서 &&로 붙여보세요. 그러면 bad_word_check()에서 false를 반환할 경우 procFilter로 넘어가지 않고 그대로 onsubmit이 취소됩니다.
return bad_word_check() && procFilter(this, insert_comment)
true나 false가 아닌 다른 값을 반환하는 함수에 !!를 붙이면 강제로 true나 false로 만들 수 있습니다. (참이 아니지 않은가~ 대략 이런 의미?) 원래부터 true나 false를 반환하는 함수라면 붙이든 안 붙이든 상관없습니다.
A && B는 A와 B를 순서대로 실행한다는 의미와 if A then B 라는 의미를 모두 가지고 있습니다. 그래서 A가 false면 B는 실행되지 않는 것입니다.
자바스크립트도 기초부분터 배워야 겠습니다 ㅜㅡ
구글링후 복붙의 한계네요.