如何检查输入字段中输入的数字是否高于我的“min”字段中的值?
<tr>
<td>Steeeeaak</td>
<td><input type="hidden" name="amount_5_min" value="10"/>
<input type="text" name="amount_5" size="4" value="10"/></td>
<td>-</td>
<td><a href="/item/delete/eventId/2/hash/a8b5dzp9rks7164wh30j2anqh13w/itemId/5">Verwijder</a> </td>
</tr>
正如您所看到的,这两个字段的名称的第一部分是相同的...这里有任何可能吗?我在表格的末尾做了提交,所以我想我必须在提交时做点什么吗?
THX!
答案 0 :(得分:2)
var fieldname = "amount_5";
var val1 = parseInt($("input[name="+field_name+"_min]").val(),10);
var val2 = parseInt($("input[name="+field_name+"]").val(),10);
// Compare the values
并绑定到表单的提交操作
$("form#your_form_id_here").submit(function() {
// Use above code
});
修改强> 凯文提出了一个很好的观点
编辑2 更新了任何输入名称
答案 1 :(得分:2)
我猜你发布的标记有很多行,购物车样式。在这种情况下,这是循环检查提交金额的所有行的方法,只需提供您的表单/表格ID以匹配您的选择器:
$("#myForm").submit(function() {
var valid = true;
$("#myTable tr td input[name^='amount_']:last-child").each(function() {
var val = parseInt(this.value, 10); //this value
var min_val = parseInt($(this).siblings().val(), 10); //min_value
if(val < min_val) {
valid = false;
alert($(this).closest('tr').children(':first').text() + //"Steeeeaak"
" doesn't meet the minimum required value: " + min_val);
}
});
return valid; //submit aborts if any didn't meet min value
});
此函数使用<input>
元素作为兄弟姐妹,按特定顺序在同一<td>
内,只使用已知的HTML结构,这对您有利。
答案 2 :(得分:1)
我会把这个放在那里只是为了好玩(部分是因为我今天刚刚了解了~~
)。
试一试: http://jsfiddle.net/694dB/
它假设输入是行中唯一的两个(或至少前两个)。
$('#myform').submit(function() {
var $inputs = $(this).find('input[name^=amount]');
var values = $inputs.map(function() {
return this.value;
}).get();
// If it is less than the minimum, add a class,
// and return false to stop the submit
if(~~values[1] < ~~values[0]) {
$inputs.closest('tr').addClass("someNewClassName");
return false;
}
});
根据您的评论更新。请注意,这对一个行有效。要对多行执行相同的操作,您需要使用回答中提供的 @Nick 等循环。
关于双位运算符的文章:
答案 3 :(得分:0)
在这种情况下,请使用以下内容:
var elms = document.getElementsByTagName("input"); //get all input tags
var texts;
var minlengths;
for (input in elms) {
var value = input.value; //'with' statement is evil
if (input.type == "text") {
texts.push(value);
} else if (input.type == "hidden") {
minlengths[value.substring(0, value.lastIndexOf("_"))] = value; //set what the field 'checks' = the minimum length
}
}
for (text in texts) { //go back through the texts because the inputs might not be right after the texts
var minlength = minlengths[text];
var textnum = parseInt(text.value, 10);
if (textnum === NaN || textnum > minlength) {
alert("One of the fields is greater than the minimum length.");
}
}
注意:此代码未经测试,可能无效。那里某处可能存在“一个接一个”的错误。
编辑:在任何情况下,您都必须执行此服务器端,因为用户可能会篡改请求。 (永远不要相信用户)
您是否有任何特定原因可以不在文本输入字段中使用 minlength
属性?