Extra Form
PHP PHP 7.2
CMS Rhymix 2.x

구글링해보면

 

onsubmit="return !!(procFilter(this, insert_comment) & bad_word_check());"

 

이런 형식으로 가능하다고 해서 해보면 

 

bad_word_check() 함수가 실행까지는 됩니다.(경고창 까지 뜹니다.)

 

그런데 실행결과 return false 가 무시되어 form 전송이 되어버립니다.

 

 

onsubmit="return bad_word_check()"

단독으로 사용하면 알림창이 뜨고 폼전송 중지까지 잘 되는데요.

 

라이믹스에서 기본적으로 사용되는 함수가 있어서 추가해서 사용해야 하는데 위 형식에 오류가 있나요?

두 함수 순서를 바꿔도 결과는 동일하네요.

 

 

  • Lv18
    &가 아니라 && 아닌가요? &는 비트연산 AND입니다.
  • Lv18 Lv30
    이상해 보이긴 했는데 문서에 & 하나만 있길래 그대로 했는데 &&로 시도해보겠습니다.
  • Lv18 Lv30
    시도해봤는데요. 함수 자체가 아예 실행이 안되는 듯 합니다. 경고창마저 안뜨고 등록되어버리네요.
  • Lv30 Lv18

    찾아보니 일반적인 경우 onsubmit에서는 &가 맞습니다.

    실제 문제는 procFilter는 무조건 false를 리턴한다는 점에 있습니다.(실제 실행하는건 인자 두번째 insert_comment입니다) 즉 폼의 onsubmit를 무력화하고 자체 submit를 실행할 목적으로 있는 함수가 procFilter이므로 아무리 추가 조건을 붙여도 폼이 전송되는 것입니다.

  • Lv36

    순서를 바꿔서 &&로 붙여보세요. 그러면 bad_word_check()에서 false를 반환할 경우 procFilter로 넘어가지 않고 그대로 onsubmit이 취소됩니다.

    return bad_word_check() && procFilter(this, insert_comment)

  • Lv36 Lv30
    !! 를 빼고 해보지는 않았는데 !! 를 빼야 하는건가요?
  • Lv30 Lv18
    윗 댓글에도 적었지만(지금쯤 보셨겠네요) procFilter 자체가 폼 전송 역할을 하므로 bad_word_check가 false를 리턴하면 procFilter로 넘어가지 않도록 조치해야 합니다.
  • Lv36 Lv30
    성공했습니다!!!
    자바스크립트도 기초부분터 배워야 겠습니다 ㅜㅡ
    구글링후 복붙의 한계네요.
  • Lv30 Lv36

    true나 false가 아닌 다른 값을 반환하는 함수에 !!를 붙이면 강제로 true나 false로 만들 수 있습니다. (참이 아니지 않은가~ 대략 이런 의미?) 원래부터 true나 false를 반환하는 함수라면 붙이든 안 붙이든 상관없습니다.

     

    A && B는 A와 B를 순서대로 실행한다는 의미와 if A then B 라는 의미를 모두 가지고 있습니다. 그래서 A가 false면 B는 실행되지 않는 것입니다.