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

时间:2012-09-04 09:07:59

标签: php jquery

我对通过动态创建的输入项循环的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] = "&nbsp;";
        $TabResColor[$ind]=0;

        $ind++;
    }

有人有什么想法吗?

提前THX

6 个答案:

答案 0 :(得分:0)

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

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”-loop你就不远了)。
我在此功能中移动了您的验证码,只是将$(this)替换为$(element)

Fiddle

答案 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. 提供唯一身份证明。
  2. 使用CSS类。类型样式是重复的,ID不是。
  3. 所以,如果我要生成一些输入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()在点击时检索它的值。