我对通过动态创建的输入项循环的JQuery Min Max Validation有疑问。 在我的php页面中,我有一个动态表,它循环访问数据库中的数据。 有时我有一个包含3个输入项(单元格)的表,有时会有6或12个输入项。 使用jquery我发现验证数据的最小值 - 最大值,但它仅适用于第一个输入项。 如何循环通过所有输入项以获得相同的最小最大验证?
这里是JQuery代码:
$(document).ready(function(){
$("input").click(function(){
var enteredValue = $("input:#value_one").val();
var min=1;
var max = 3;
var num = parseInt(enteredValue);
if (min > num || max < num) {
alert('Number ' + num + ' is not a number between ' + min + ' and ' + max);
return false;
}
});
});
这里有PHP HTML代码:
foreach($datas as $idactivite=>$dat){
$totalactiv=0;
$nbdiviseur=0;
foreach($dat as $dd){
$totalactiv+=$dd["note"];
$nbdiviseur++;
}
$mamoyactiv=$totalactiv/$nbdiviseur;
$position=3;
$mamoyactiv = substr($mamoyactiv, 0, $position);
$moyenneverticale[$idactivite]=$mamoyactiv;
// Here the input Item who loops through the DB Query to get them values:
$htmldroit.="<td id='myguaNote' bgcolor='$bgcolor' align='center'>
<input name='".$idactivite."_".$idagent."' id='value_one' maxlength='1' class='grand' value='".$dat[$idagent]["note"]."' ></td>";
$totalfamille+=$dat[$idagent]["note"];
$TabRes[$ind] += $dat[$idagent]["note"];
$TabObj[$ind] = " ";
$TabResColor[$ind]=0;
$ind++;
}
有人有什么想法吗?
提前THX答案 0 :(得分:0)
我认为你并没有真正选择实际点击的输入字段。
将var enteredValue = $("input:#value_one").val()
替换为
var enteredValue = $(this).val();
click
的回调函数包含对this
关键字中单击的DOM元素的引用。将其包装在$()
中以使其成为jQuery对象,最后在其上调用val()
。
编辑:
要在按钮单击时验证多个输入字段,我使用了辅助类validate
。假设您要验证的所有输入字段都具有此类,您可以绑定一些代码以在单击时提交按钮:
$("#submitButton").click(function(){
$(".validate").each(validateField);
});
首先选择所有具有类validate
的元素,并在此集合中调用jQuery的each(),它将函数句柄作为参数。这个函数(在这种情况下是validateField
)应该用来输入参数(索引和元素,请参阅文档以获取更多详细信息 - 如果你想到一个奇怪的“for in”-loop你就不远了)。
我在此功能中移动了您的验证码,只是将$(this)
替换为$(element)
答案 1 :(得分:0)
一些提示
如果您正在使用动态数据,请不要使用简单的“点击”功能,而是尝试.on(使用jQuery 1.7 + )
$('document').on('click', 'input', function(){
var enteredValue = $(this).val();
//your rest of code
});
答案 2 :(得分:0)
|| if(min&gt; num || max&lt; num){
更改为
// For a number not between min and max
if (num < min || num > max) {
// For a number between min and max
if (num >= min && num <= max) {
进行测试:
<script>
function test(){
$html = document.getElementById("msg");
num = 100;
min = 10;
max = 100;
if (num < min || num > max) {
$html.innerHTML = "Num is not between min and max";
return;
}
if (num >= min && num <= max) {
$html.innerHTML = "Num is between min and max";
return;
}
}
</script>
<body onload="test()">
<div id="msg" style="border:1px solid #000000; height:100px">Answer has not been found!</div>
</body>
答案 3 :(得分:0)
听起来你可能正在寻找.on(),它会随着页面的变化而保持最新状态,而你所拥有的点击只是在页面创建时的状态。尝试:
$("input").on("click",function(){
答案 4 :(得分:0)
试试这个
// ==========原型找出数组中的最小值========================= < / p>
Array.prototype.min = function()
{
return Math.min.apply(null, this)
}
// ============= Jquery Scripting ============================== =====================
$selector=$("input"); //Your selector which is cursoring your inputs
$aryVal=new Array; //Define an Array
$selector.each(function() //Iterate to all the input
{
$aryVal.push(this.value); //push the value to array
});
var min = Math.min.apply(null, $aryVal); //Getting min value from array
alert(min);
答案 5 :(得分:0)
创建用于在某处注入变量的动态数量的元素时的良好做法是:
所以,如果我要生成一些输入1到100
for ($i = 1; $i <= 100; $i++)
{
$IdAndName = "input" . $i;
echo("<input type='text' id='" . $IdAndName . "' name='" . $IdAndName . "' class='myStyle'/><br>\n");
}
现在,您将拥有ID input1到input100的HTML元素
然后您可以使用JQuery click事件,然后使用$(this).val()在点击时检索它的值。