여러 체크박스 중 하나의 선택을 필수로 설정

개요



두 개 이상의 항목을 선택해야 하는 스크립트입니다. ServiceNow 포럼에서 질문에 대한 답변입니다.
하나 이상의 선택을 필요로 하는 경우 UI 정책에서 하나의 확인란을 필수로 설정하면 확인을 필수로 설정할 수 있습니다.


둘 이상의 선택을 필수로 하려면 UI 정책에서 두 개의 확인란을 필수로 설정하더라도 하나의 선택으로 등록할 수 있습니다.
두 개 이상의 선택을 필수로 하려면 클라이언트 스크립트를 작성해야 합니다.

절차



변수 정의



다음과 같이 레이블과 세 개의 확인란을 정의합니다.


UI 정책



최소한 하나의 선택을 필요로 하기 위해 UI 정책을 만듭니다.

양식을 열어 보면 다음과 같이 라벨 오른쪽에 빨간색 '*'가 표시되어 선택이 필수임을 나타냅니다.

그러나 불행히도 하나를 선택하면 검게 변합니다. 이것은 어쩔 수 없다고 가정합니다.


클라이언트 스크립트



다음 스크립트를 작성합니다. 변수 "mandatoryCount"는 선택 필수 항목의 수입니다. 이번에는 2개의 선택을 필수로 하므로 「2」로 합니다.
function onSubmit() {
    //Set the mandatory checkbox variable names and total mandatory count here
    var mandatoryVars = 'club_wembely_membership,education,player_status_competitions';
    var mandatoryCount = 1;

    var passed = forceMandatoryCheckboxes(mandatoryVars, mandatoryCount);
    if (!passed) {
        //Abort the submit
        var message = 'You must select at least ' + mandatoryCount + ' options.';
        g_form.addErrorMessage(message);
        return false;
    }
}

function forceMandatoryCheckboxes(mandatory, count) {
    //Split the mandatory variable names into an array
    mandatory = mandatory.split(',');
    var answer = false;
    var varFound = false;
    var numTrue = 0;
    //Check each variable in the array
    for (var x = 0; x < mandatory.length; x++) {
        //Check to see if variable exists
        if (g_form.hasField(mandatory[x])) {
            varFound = true;
            //Check to see if variable is set to 'true'
            if (g_form.getValue(mandatory[x]) == 'true') {
                numTrue ++;
                //Exit the loop if we have reached required number of 'true'
                if (numTrue >= count) {
                    answer = true;
                    break;
                }
            }
        }
    }
    //If we didn't find any of the variables allow the submit
    if (varFound == false) {
        answer = true;
    }
    //Return true or false
    return answer;
}

실행



양식을 열고 시도해보십시오. 항목 1개를 선택한 것만으로 "Order Now"버튼을 누르면 다음과 같이 에러 메시지가 표시됩니다.


이상

좋은 웹페이지 즐겨찾기