2011-10-16 3 views
0

텍스트 필드가 있으므로 값을 추가해야합니다. 문제는이 텍스트 필드의 값이 입력되지 않았지만 다른 소스에서 가져온 것입니다. 이 텍스트 필드는 읽기 전용이기도합니다. 이 텍스트 필드의 값이 변경되면 적절한 이벤트가 발생합니다. 여기에 내가 현재 사용하고 있지만 텍스트 필드를 계산할 수 있도록 포커스를 놓고 클릭해야하므로 충분히 좋지 않습니다. FYI .change 및 .click 이벤트가 제대로 작동하지 않습니다. 즉시 값이 합산되어 동적으로 변경되어야합니다. #grandmealstotal은 추가해야하는 텍스트 필드 중 하나이며 #usdgrandaccomtotal은 추가해야하는 다른 텍스트 필드입니다. 결과는 id # gross_tripexpense 인 텍스트 필드에 경고되고 표시됩니다. 아래는 내가 사용하는 것입니다.텍스트 필드 값 추가 Jquery HTML

$("#grandmealstotal").live('blur',function(){ 
var mealtotal=parseFloat($("#grandmealstotal").val()); 
var accomtotal=parseFloat($("#usdgrandaccomtotal").val()); 
var grosstotals=parseFloat(accomtotal+mealtotal); 
alert(grosstotals) 
$("#gross_tripexpense").val((grosstotals).toFixed(2)); 
}) 

도움을 주시면 감사하겠습니다.

+0

$ ("# formdiv")을 사용하기 시작했습니다. live ('mousemove', function) .... 여기서 #formdiv는 텍스트 필드가있는 양식의 ID입니다. 마우스를 움직이면 값이 계산됩니다. 그러나 이것은 매우 효율적이지 않으며 실시간 느낌을 나타내는 "프롬프트"결과를 생성하지 않습니다. – MaxI

답변

1

당신은이 경우 .keydown() 또는 .keyup() 이벤트를 사용할 수 있습니다

$('#grandmealstotal').keyup(function() { 
    var mealtotal = parseFloat($('#grandmealstotal').val()); 
    var accomtotal = parseFloat($('#usdgrandaccomtotal').val()); 
    var grosstotals = parseFloat(accomtotal + mealtotal); 
    alert(grosstotals); 
    $('#gross_tripexpense').val((grosstotals).toFixed(2)); 
}); 

은 또한 사용자가 잘못된 번호를 입력하면 작동하지 않을 수 있습니다 그 parseFloat 방법으로 오류 처리를 수행하는 것이 있는지 확인하십시오. 값은 읽기 전용이며, DOM이 준비되면 당신이 계산을 수행 할 수 변경할 수없는 경우

:

var mealtotal = parseFloat($('#grandmealstotal').val()); 
if (!isNaN(mealtotal)) { 
    // use the mealtotal variable here 
} else { 
    alert('please enter a valid number for total meals'); 
} 

UPDATE : 당신은이에 대한 isNaN 기능을 사용할 수

$(function() { 
    ... do the calculation here 
}); 
+0

텍스트 필드는 읽기 전용입니다. – MaxI

+0

@Max, oops,이 세부 정보가 누락되었습니다. 이 경우 값을 변경할 수 없으므로 이벤트를 구독 할 필요가 없습니다. '$ (document) .ready'에서 계산을 수행하기 만하면됩니다. –

+0

텍스트 필드는 사용자가 다양한 항목을 탐색하고 선택할 때 주기적으로 값이 변경됩니다. 해결 방법에 대한 추가 의견을 참조하십시오. – MaxI

0

.change() 이벤트에 대한 이벤트 처리기를 추가 한 다음 입력 값을 업데이트 할 때마다 .change() 이벤트를 트리거 할 수 있습니다.