2014-03-24 1 views
0

숫자 입력란이 있습니다. 최소 너비로 시작하여 입력이 기본값 -1에 적합하도록하려고합니다. 값이 -100, -1,000 등으로 감소하거나 전체 필드가 ​​표시되도록 입력 너비를 조정해야합니다.Twitter Bootstrap : 변경시 내용에 맞게 입력 크기 조정

<div class="col-lg-4 input-group "> 
    <span class="input-group-addon">$</span> 
    <input name="childPrice" id="childPrice" type="number" step=".25" value="-1" min="-99999" max="-1" class="form-control" onchange="$(this).attr('size', $(this).val().length);" size="9"> 
    <span class="input-group-addon">/ticket</span> 
</div> 
+0

귀하의 방법을 사용 유형을 사용하는 경우 = "텍스트"하지만 난 당신이 번호를 사용하고자하는 추측하고 작동합니다 http://jsfiddle.net/tonicboy/uVJ6L/

JS - 여기

는 jsFiddle에 대한 개념의 증거입니다. – Mathias

답변

1

간단한 방법은, 다음 한 문자의 폭을 미리 계산 고정 폭 글꼴을 사용하는 것, 동적으로하는 것이 필요 얼마나 많은 문자에 따라 그 폭을 설정합니다 분야에 변화 처리기를 추가 있다.

텍스트 필드의 값을 취하는 변경 핸들러를 사용하여 display: none으로 분리 된 노드를 만들고 DOM에 삽입하고 너비를 측정 한 다음 해당 값을 사용하는 것이 더 어렵습니다 필드의 크기를 동적으로 조정할 수 있습니다.

$('#my-text').on('keyup', function(ev){ 
    var field = $(ev.currentTarget), 
     origWidth = field.outerWidth(), 
     width = 0, 
     val = field.val(), 
     tmp = $('<p style="display:none;">' + val + '</p>'); 

    $('body').append(tmp); 
    width = tmp.outerWidth(); 
    tmp.remove(); 
    if (width > origWidth) 
     field.css('width', width); 
}); 
+0

다음과 같은 아이디어를 내놓았습니다. http://jsfiddle.net/uVJ6L/2/ – TylersSN

+0

그래도 문제가 없지만 몇 가지 문제가 있습니다. 우선, 'change'이벤트는 필드를 떠날 때 (불투명) 한 번만 발생합니다. 나는 그것이 당신이 원했던 것이거나 입력 할 때 끊임없이 확장하기를 원하는지 확실하지 않습니다. 어떤 경우에는 'keyup'이벤트가 필요합니다. 다른 하나는 각 문자에 대해 15의 일정한 폭을 가정한다는 것인데, 이는 정확히 정확하지 않습니다. –

+0

숫자 입력 방식을 사용하고 싶지 않다고 생각합니다. 사용자가 입력을 입력 할 때 keyup 이벤트가 필요하다는 것이 맞습니다. 그러나 원래의 논리는 필드를 변경하기 위해 위아래 화살표 만 사용하는 것을 고려했습니다. 버튼을 누르거나 클릭 할 때마다 변경 사항이 적용됩니다. – TylersSN

관련 문제