0
이것은 이전에 게시 한 것과 관련된 질문입니다. 'pull'로 시작하는 모든 입력 요소를 합산하여 'totalpull'입력 필드에 합계를 넣으려고합니다. 나는 그 부분을 일하고있다. 이제 사용자가 'totalpull'입력 필드에 수동으로 무언가를 입력하고 각 'pull'입력을 해당 값으로 설정하면 평균을 계산하려고합니다. 아래에서 노력하고 있지만 작동하지 않습니다 ...평균 계산하기
//This is the sum formula, which works
$('input[name^=pull]').bind('keyup', function() {
$('#totalpull').val($('input[name^=pull]').sumValues());
});
$.fn.sumValues = function() {
var sum = 0;
$("input[name^='pull']").each(function() {
if ($(this).is(':input')) {
var val = $(this).val();
} else {
var val = $(this).text();
}
sum += parseFloat(('0' + val).replace(/[^0-9-\.]/g, ''), 10);
});
return sum;
};
//This is the avg formula, which does not work
//Keep getting v/rowCount.replace is not a function
$('input[name=totalpull]').bind('keyup', function() {
$('input[name^=pull]').each(function() {
$(this).val($('input[name=totalpull').avgValues());
});
});
$.fn.avgValues = function() {
var avg = 0;
var v = $("input[name=totalpull").val();
var rowCount = $("#convertRow tr").length;
avg += parseFloat((v/rowCount).replace(/[^0-9-\.]/g, ''), 10);
return avg;
}
<table id="convert">
<tbody>
<tr><td><input type="text" value="" name="pull0" /></td></tr>
<tr><td><input type="text" value="" name="pull1" /></td></tr>
<tr><td><input type="text" value="" name="pull2" /></td></tr>
<tr><td><input type="text" value="" name="pull3" /></td></tr>
</tbody>
<tfoot>
<input type="text" id="totalpull" name="totalpull" value="" />
</tfoot>
</table>
코드에 "]"이 누락되었습니다. 'var v = $ ("input [name = totalpull]") .Val();' –
그 결과 동일한 동작이 발생합니다 ... – whitman6732
마크 업에 문제가 있습니다 :'totalpull'을'
답변
귀하의 즉각적인 문제가 단지 구문 오류입니다 :
더
replace
에 없다 숫자. 당신은 던져toString
필요합니다 (V가 같은)은 BTW, 문자열을도없는
/
있다,하지만 자바 스크립트는 당신을 위해 그것을 변환하고 당신에게NaN
이없는 경우를 제공하기 위해 노력할 것입니다.출처
2010-03-10 21:36:58
sumValues 함수에서 'input [name^= pull]'선택기가 반복됩니다. 선택기를 함수에 전달하거나 이미 가져온 값에 대해 조치를 취해야합니다.
sumValues에서 'this'는 입력 컬렉션이어야합니다. 따라서, 당신은 같은 것을 할 수 있어야한다 :
또한 '입력'하고있어'입력'혼란. '입력'은 입력 태그입니다. : input은 입력 또는 선택 태그입니다. 총 합계가 수동으로 변경
출처
2010-03-10 20:59:10 CWF
sum 함수에 문제가 없습니다. 그것은 내가 게시 한 avgValues 함수입니다. – whitman6732
미안하지만, 내가해야 할만큼 많은 관심을 기울이지 않았습니다. (v/rowCount)에서 문자를 삭제하는 이유는 무엇입니까? 그게 바로 당신이 원하는 가치 인 것 같습니다. 당신의 정규식은 두 번째 '-'때문에 나에게 펑키하게 보입니다. 나는 그게 어울릴 지 모르겠다. 적어도 그걸 가져 가라. 당신이하고 싶은 일은 다음과 같습니다 : var inputs = $ ('input [name^= pull]'); var avg = inputs.sumValues ()/inputs.length; 당신은 과잉 합병증으로 고통 받고 있습니다. 코드를 단순화하면 솔루션이 꽤 빨리 나타나야합니다. – CWF
경우, 값은 필드 "* 풀"로 배포됩니다
출처
2010-03-10 21:04:27
거기에 넣어, 오류가 멀리,하지만 여전히 각 입력 필드를 계산하지 ... – whitman6732
제발, 내가 코멘트로 마크 업을 확인하십시오 ... 나는 여기 테스트 케이스를 만들었 : http : // jsfiddle.net/V54gC/귀하의 케이스와 다른 점을 확인하고 확인할 수 있습니까? –
관련 문제