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 есть), но JavaScript попытается преобразовать его для вас и дать вамNaN
, если она не может.источник
2010-03-10 21:36:58
В функции sumValues, вы повторив «вход [имя = нагрузочный]» селектор. Вы должны либо передать селектор в свою функцию, либо действовать на значения, которые у вас уже есть.
В sumValues «это» должно быть сборкой входов. Таким образом, вы должны быть в состоянии сделать что-то вроде:
Вы также получили «вход» и «: вход» спутать. «input» - это входной тег. : вход - любой ввод или тег.
источник
2010-03-10 20:59:10 CWF
У меня нет проблемы с функцией sum. Это функция avgValues, о которой я рассказывал. – whitman6732
Извините, я не обращал столько внимания, сколько должен был. Почему вы удаляете символы из (v/rowCount)? Похоже, это именно то значение, которое вы хотите. Ваше регулярное выражение выглядит мне напуганным из-за второго '-'; Я не уверен, что это будет соответствовать. По крайней мере, уберите это. Это, я думаю, что вы хотите сделать что-то вроде: var input = $ ('input [name^= pull]'); var avg = inputs.sumValues ()/input.length; Вы страдаете от чрезмерного усложнения. Упростите код, и решение должно появиться довольно быстро. – CWF
Когда общая сумма изменяется вручную, то значение распространяется на поле «тянуть *»:
источник
2010-03-10 21:04:27
Поместите это там, и ошибки ушли, но все равно не вычисляли каждое поле ввода ... – whitman6732
Пожалуйста, проверьте свою разметку, когда я прокомментировал ... Я сделал тестовый пример здесь: http: // jsfiddle.net/V54gC/можете ли вы проверить и посмотреть, что отличается от вашего дела? –
Смежные вопросы