2012-01-25 3 views
0

선택한 체크 박스를 기반으로 문자열을 작성하고 있습니다. 선택한 여러 문자열이있는 경우 복수화 추가 할 성명을 썼습니다 있지만 배열에 의해 'policyHidden'필드에 넣어 마지막 두 쉼표를 제거하는 방법을 알아낼 수 없습니다.마지막 두 인스턴스 제거하기

$(document).ready(function(){ 
    $('input:checkbox').change(function() { 

     var keys = []; 

     var policies = $('input:checkbox:checked').map(function() { 
     return $(this).siblings('span').text(); }).get(); 

     $.each(policies, function(key, value) { keys.push(value) }); 

     output = keys.join(", "); 

     FormSetFieldValue('policyHidden', output); 

     if (keys.length > 1) { 
     keys.splice(keys.length - 1, 0, "and"); 
     } 

     FormSetFieldValue('policyHidden', output); 

    }); 
}); 

예를 들어, 출력은 그냥 마지막 두 쉼표를 제거 할

value1, value2, and, value3 

입니다. 내가 정규식을해야합니까?

FYI, FormSetFieldValue는 다른 스크립트의 함수입니다. 첫 번째 변수는 변경하려는 변수를 호출하고 두 번째 변수는 설정된 값을 나타냅니다. 현재 당면한 문제에 어떤 영향도 미치지 않아야합니다.

+0

옥스포드 쉼표를 유지해야합니다. –

+0

@ tandu - 그는해서는 안됩니다. 그것은 끔찍한 것 같습니다. –

+0

@tandu 이것은 클라이언트 요청의 부담이지만, 나는이 하나의 Joseph와 동의한다. – dstrunk

답변

1

나는 거기에 넣는 것 - 그리고 나서 그것을 제거하는 것이 반 직관적이라고 생각합니다.
당신은 처음부터 당신의 문자열로 그런 식으로 넣어 안 :

var output = []; 
output[1] = keys.pop(); 
output[0] = keys.join(', '); 

output = output.join(' and '); 

다음은 바이올린의 : http://jsfiddle.net/yfKjp/

+0

내 것보다 훨씬 더 우아하다. 예, 제 시간에 "초급 프로그래머"로 합쳐졌습니다. 감사! – dstrunk

+0

@silentpost - 사실, 그것을 생각하게됩니다. 우리가 이미'.pop()'을 사용한다면'.slice()'는 필요 없다. 나는 나의 대답을 업데이트했다. –

1

정규 표현식은 하나 개의 옵션입니다. 당신은 또한 ', and'for 'and'에 대한 javascript 바꾸기 기능을 수행 할 수 있습니다.

var str = "value1, value2, and, value3" 
str.replace(', and,',' and') 

쉼표를 이스케이프해야 할 수도 있습니다.

관련 문제