선택 필드에 대한 동적으로 생성 된 옵션을 어떻게 재 포장합니까?

StackOverflow https://stackoverflow.com/questions/808328

문제

배경두 개의 선택된 형태의 필드가 함께 묶여 있습니다 : 지속 시간과 주파수. 사용자가 주파수를 선택하면 지속 시간 옵션이 동적으로 삽입됩니다. 기본 옵션이 있지만 사용자가 확장 할 때 필드가 비어 있지 않도록하기 만하면됩니다.

예를 들어, 주파수 옵션은 "Day", "Other Day"및 "Week"입니다. "일"을 선택하면 주파수 옵션이 "5 일", "15 일"및 "30 일"으로 변경됩니다.

문제문제는 사용자가 오류로 양식을 제출할 때 발생하며, 옵션이 동적으로 생성되는 주파수 선택 필드를 제외하고 모든 양식 필드와 오류가 강조 표시됩니다. 강조 표시되지 않으며 옵션은 기본 옵션입니다.

사용자가 오류를 제출하면 이러한 옵션을 다시 채울 수있는 방법이 있습니까? 우리는 약간의 JavaScript 검증을 수행하고 있으므로 이러한 상황은 자주 발생하지 않아야하지만 사용자에게 가능한 한 고통없는 경험을 얻고 싶습니다.

암호두 필드를 함께 체인하기 위해 jQuery와 Cascade라는 jQuery 플러그인을 사용하고 있습니다. (http://plugins.jquery.com/project/cascade)

여기 내 커스텀 JavaScript가 있습니다.

이 스크립트는 옵션 목록을 생성합니다.

var list1 = [
    {'When':'86400','Value':' ','Text':' '},
    {'When':'172800','Value':' ','Text':' '},
    {'When':'604800','Value':' ','Text':' '},
    {'When':'86400','Value':'432000','Text':'5 days'},
    {'When':'86400','Value':'1296000','Text':'15 days'},
    {'When':'86400','Value':'2505600','Text':'30 days'},
    {'When':'172800','Value':'1296000','Text':'15 days'},
    {'When':'172800','Value':'2505600','Text':'30 days'},
    {'When':'172800','Value':'3888000','Text':'45 days'},
    {'When':'604800','Value':'2505600','Text':'4 weeks'},
    {'When':'604800','Value':'3715200','Text':'6 weeks'},
    {'When':'604800','Value':'4924800','Text':'8 weeks'}
];

function commonTemplate(item) {
    return "<option value='" + item.Value + "'>" + item.Text + "</option>"; 
};

function commonMatch(selectedValue) {
    return this.When == selectedValue; 
};

그리고 이것은 선택 옵션의 생성을 트리거하는 스크립트입니다.

jQuery("#duration).cascade("#frequency",{
    list: list1,            
    template: commonTemplate,
    match: commonMatch          
})

질문양식이 오류가있는 브라우저에 반환 될 때 동적으로 생성 된 주파수 옵션을 얻는 방법에 대한 생각이 있습니까? 현재 사용중인 캐스케이드 플러그인이나 다른 방법을 사용할 수 있습니까?

도움에 감사드립니다. :-)

도움이 되었습니까?

해결책

나는이 플러그인에 익숙하지 않지만, 당신은 그냥 발사 할 수 없었습니다. change() 이벤트 #duration 및/또는 #frequency 문서에?

$(document).ready(function() {
    $('#duration').change();
    $('#frequency').change();
});

나는 모든 스크립트가 수행하는 모든 스크립트가 선택의 변경 이벤트에 적어도 (기본적으로) 마법을 작동하도록 플러그인을 트리거해야한다고 확신합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top