循环输入项以获得最小值最大值


Looping through Input Items to get Min Max Value

我有一个关于JQuery最小-最大验证在动态创建的输入项中循环的问题。在我的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] = "&nbsp;";
        $TabResColor[$ind]=0;
        $ind++;
    }

有人有什么想法吗?

THX提前

我认为您并没有真正选择实际单击的输入字段。

用替换var enteredValue = $("input:#value_one").val()

 var enteredValue = $(this).val();

来自click的回调函数在this关键字中保存对单击的DOM元素的引用。将其封装在$()中,使其成为jQuery对象,并最终对其调用val()

Fiddle

编辑:为了验证按钮单击上的多个输入字段,我使用了一个助手类validate。假设你想要验证的所有输入字段都有这个类,你可以在点击时绑定一些代码来提交按钮:

$("#submitButton").click(function(){
    $(".validate").each(validateField);
});

首先,所有具有类validate的元素都将被选中,在这个集合中,我们调用jQuery的each(),它将函数句柄作为参数。这个函数(在本例中为validateField)应该用于输入参数(索引和元素,请参阅文档以了解更多详细信息-如果你认为"for in"循环中有一个奇怪的for,那你就不远了。)我在这个函数中移动了您的验证代码,并简单地用$(element) 替换了$(this)

Fiddle

几个提示

如果您使用的是动态数据,那么不要使用简单的"点击"功能,而是尝试.on(使用jQuery1.7+

 $('document').on('click', 'input', function(){
   var enteredValue = $(this).val();
   //your rest of code
});

试试这个

//================在数组中查找最小值的原型================

        Array.prototype.min = function() 
        {
            return Math.min.apply(null, this)
        }

//=============Jquery脚本====================================

            $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);

听起来你可能在寻找.on(),它会随着页面的变化而保持最新状态,而你所点击的只是页面创建时的状态。尝试:

$("input").on("click",function(){

||如果(min>num||max<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>

创建用于在某个地方注入变量的动态元素量时的良好做法是:

  1. 提供唯一的ID以进行识别
  2. 使用CSS类。类样式是指重复的,ID则不是

因此,如果我要生成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单击事件,然后使用$(this).val()在单击时检索它的值。