theo
8월 14, 2025, 6:45오전
1
아래와 같은 내용이 안내되어 있는데요.
submitButton disabledFn
특정 조건에 따라 제출 버튼을 비활성화, 활성화할 수 있습니다.
사용 사례별 설명
[1개 이상의 폼 에러로 submit 막는 방법]
param 중 하나라도 invalid하면 submit button이 disabled
param이 validateFn 에 의해 Invalid 함에도 submitButton이 바로 비활성화되지 않습니다.
modals → blocks 내부에서 params를 사용하고 있습니다.
같은 block 내에 submit button 입니다.
모달을 닫고 다시 열면 invalid 상태가 그대로 남아있고, submitButton은 disabled 상태로 있습니다.
1개의 좋아요
hbkim
8월 19, 2025, 5:38오전
2
안녕하세요.
params validateFn 과 submitButton disabledFn은 별도로 동작합니다.
submitButton disabledFn 에서 params 조건을 설정했을때도 비활성화가 잘 안되고 계실까요?
꼭 params 에 validateFn을 써야하는 상황이시라면 코드와 함께 추가 공유 부탁드립니다.
감사합니다.
theo
8월 19, 2025, 6:02오전
3
sumitButton의 disabledFn 은 따로 작성하지 않았습니다.
params 마다 있는 조건을 종합적으로 작성하면 되긴 한데, 아래 링크 드린 글에서
’1개 이상 폼에러가 있으면 submit button이 disabled 된다’ 라고 설명되어 있어서 sumitButton의 disabledFn을 명시하지 않으면 되는 줄 알았습니다.
하지만 이상한 점은, sumitButton의 disabledFn은 없음에도 특정 param이 validateFn에 의해 에러메세지가 노출될때 버튼이 비활성화 안되는데, 모달을 다시 열면 param이 validateFn에 의해 submit button이 비활성화 되어 있습니다.
submitButton disabledFn
특정 조건에 따라 제출 버튼을 비활성화, 활성화할 수 있습니다.
사용 사례별 설명
[1개 이상의 폼 에러로 submit 막는 방법]
param 중 하나라도 invalid하면 submit button이 disabled
[개별 폼에러가 아닌 전체 폼 검증으로 submit 막는 방법]
params invalid 상태가 아닌 경우 (사용 안 하는 경우)
block.submitButton.disabledFn 또는 block.disabledFn 지정하면, 해당 로직에 따라 disabled 됩니다.
return true → 비활성화됨
return ‘메시지’ → 비활성화됨 (버튼에 tooltip 표시)
return false → 활성화
예제 YAML
- path: pages/FHeCzm
title: 제목
subtitle: 내용
# params:
# - key: project
…
코드도 공유드립니다.
modals:
- path: edit-end_date-:pid
name: 종료일 변경
header: false
mode: center
height: 200px
useColumn:
- pid
- name
- start_at
- end_at
blocks:
- type: query
subtitle: |
현재 종료일은 "{{ end_at }}" 입니다.
resource: pt_prod
sqlType: update
sql: >
{{생략}}
sqlConfirm: true
confirmText: |
워크스페이스를 확인하세요!
[[ {{name}} ]]
변경하시겠습니까?
reloadAfterSubmit: true
display: form
formOptions:
firstLabelWidth: 100px
submitButton:
type: primary
label: 변경하기
params:
- key: id
valueFromRow: pid
- key: start_at
valueFromRow: start_at
- key: end_at_umlimit
required: true
label: 종료일
radio:
- value: Y
label: 무기한
- value: N
label: 종료일 지정
radioButtonGroup: true
defaultValue: N
validateFn: |
const end_at = params.find(e => e.key == 'end_at')
if(param.value == 'Y'){
end_at.disabled = true
end_at.value = ''
} else{
end_at.disabled = false
}
return true
- key: end_at
label: 날짜 선택
format: date
width: 180px
disabled: false
defaultValueFromRow: end_at
validateFn: |
if(param.value != ""){
const startDate = new Date(params.find(e => e.key == 'start_at').value);
const endDate = new Date(param.value);
if (startDate > endDate) {
return '시작일보다 과거일 수 없습니다.'
}
}
return true
1개의 좋아요
hbkim
8월 19, 2025, 6:15오전
4
추가 말씀 감사합니다!
params validateFn 기능만 사용하신거군요.
submit button 비활성화 관련된 부분은 기술팀에 전달하여 확인해보겠습니다.
1개의 좋아요