然后我们去:
我正在编写(实际上感觉更像是尝试和询问)使用JS的GreaseMonkey脚本并包含(也使用)jQuery库。
我用一些输入字段创建了另一个表。实施例(输入字段只):
+ " < input type=\" text\" id=\" field_1\" name=\" min_field_1\" value=\"\" > "
+ " < input type=\" text\" id=\" field_2\" name=\" min_field_2\" value=\"\" > "
+ " < input type=\" text\" id=\" field_3\" name=\" min_field_3\" value=\"\" > "
+ " < input type=\" text\" id=\" field_4\" name=\" min_field_4\" value=\"\" > "
//the results should be rendered in another input-field in this case with id=field_result_min
+ " < input type=\" text\" id=\" field_result_min\" name=\"min_field_result\" > "
+ " < input type=\" text\" id=\" field_result_max\" name=\"max_field_result\" > "
+ " < input type=\" text\" id=\" field_result_avg\" name=\"avg_field_result\" > "
我的目标是获取字段的最小值,最大值和平均值,并将结果呈现在另一个输入字段中。
//returns the min value of all input-fields starting with a name attribute of min
$("input[name^='min']")min.()
这不起作用,因为jQuery库没有像JS那样的任何min()或max()。
所以我试过了......喜欢
<input type="button" value="=" onclick="window.document.getElementById('field_result_min') = Math.min(window.document.getElementById('field_1').value,window.document.getElementById('field_2').value,window.document.getElementById('field_3').value,window.document.getElementById('field_4').value)" >
嗯...我再次陷入困境和困惑 - 即使在我解释的时候。
问题:如何在一个输入字段中渲染某些输入字段的最小值和最大值?
非常感谢任何帮助。 Faili
更新 这就是我解决它的方式。好吧,它只是平均值和最大值(最小值是可推导的)。任何更改或错误都应来自复制和粘贴以及更改某些内容。在stackoverflow的代码中。
function calculateAvg() {
var fields = [1*window.document.getElementById('field_1').value,1*window.document.getElementById('field2').value,1*window.document.getElementById('field').value,1*window.document.getElementById('field4').value,1*window.document.getElementById('field5').value,1*window.document.getElementById('field6').value];
var total = 0;
var anzahl = 0;
for(i=0;i 0) {
total = total+fields[i];
anzahl=anzahl+1;}
}
var durchschnitt = (total/anzahl);
window.document.getElementById('fieldavg').value = durchschnitt;
}
$("#fieldavg").blur (calculateAvg);
function calculateMax() {
var fields = [1*window.document.getElementById('field_1').value,1*window.document.getElementById('field2').value,1*window.document.getElementById('field').value,1*window.document.getElementById('field4').value,1*window.document.getElementById('field5').value,1*window.document.getElementById('field6').value];
var max = 0;
for(i=0; i<fields.length;i++) {
if(fields[i] > 0) {
if(max<fields[i]){
max=fields[i];
}
}
}
window.document.getElementById('field8').value = max;
}
$("'field_8").blur (calculateMax);
所以,谢谢你的帮助。我真的需要它。 Faili
答案 0 :(得分:5)
使用其他库是一种方法,但手动解决小问题[使用原始javascript ]会更好。 更改下面代码中的选择器,然后检查。
$(function(){
sel = $('.field')
min_field = $('#min');
max_field = $('#max');
avg_field = $('#avg');
len = $(sel).length;
$(sel).change(function(){
sum = 0
list = []
$(sel).each(function(){
val = Number($(this).val());
list.push(val);
sum += val;
})
$(min_field).val(Math.min.apply(Math, list))
$(max_field).val(Math.max.apply(Math, list))
$(avg_field).val(sum/len);
})
})
快乐编码。
答案 1 :(得分:1)
试试这个:
var values = $("input[name^='min']").map(function(){
return isNaN(this.value) ? [] : +this.value;
}).get();
var min = Math.min.apply(null, values);
然后你可以将min-value添加到另一个输入字段,如下所示:
$('#some-input').val(min);
答案 2 :(得分:1)
您可能想查看jQuery Calculation Plug-in。您的示例的语法将是这样的:
var MinVal=$("input[name^='min_field_']").min(); // Get minimum value
var MaxVal=$("input[name^='min_field_']").max(); // Get maximum value
var AvgVal=$("input[name^='min_field_']").avg(); // Get average value
这将是更快的版本:
var MinField=$("input[name^='min_field_']");
var MinVal=MinField.min(); // Get minimum value
var MaxVal=MinField.max(); // Get maximum value
var AvgVal=MinField.avg(); // Get average value
答案 3 :(得分:0)
如果没有插件,您可以执行this JSFiddle
之类的操作Array.prototype.avg = function() {
var total = this[0];
var len = this.length;
for (var i = 1; i != len; i++) total += this[i];
return total / len;
}
Array.prototype.min = function() {
return Math.min.apply( Math, this );
}
Array.prototype.max = function() {
return Math.max.apply( Math, this );
}
var values = $("input[id^='field_']").map(function(){
var value = $(this).val();
if (value.length == 0 || isNaN(value)) {
return 0;
} else {
return parseFloat(value);
}
}).get();
$('#max').val(values.max());
$('#min').val(values.min());
$('#avg').val(values.avg());
原型应该在将来有所帮助。