如何更改使用jquery中的循环创建的文本框onchange的值

时间:2016-07-18 17:31:52

标签: javascript php jquery

我需要在改变第一个时改变第二个的值

对于ex,如果用户更改valuex00的值,则相同的值应该是valuey00,对于valuex01和valuey01

相同
     //first one 
<?php $a=0;?>
<?php  for ($i=0;$i<5;$i++) {?>
<?php  for ($j=0;$j<5;$j++) {?>

    <input type="text" name="<?php echo 'post1['.$a.'][value1]'?>" class="valuex<?php echo $i.$j;?>">


<?php $a++;?>
<?php }?>
<?php }?>


   //second one      
   <?php $a=0;?>
<?php  for ($i=0;$i<5;$i++) {?>
<?php  for ($j=0;$j<5;$j++) {?>

    <input type="text" name="<?php echo 'post2['.$a.'][value1]'?>" class="valuey<?php echo $i.$j;?>">


<?php $a++;?>
<?php }?>
<?php }?>

如何使用更改事件上的jquery实现此目的

请建议解决方案

3 个答案:

答案 0 :(得分:1)

试试这个

object d = 0.39999999999999997; 
decimal result;
decimal.TryParse(d.ToString(), out result);
return result;

我的结果

enter image description here

答案 1 :(得分:0)

我更像是一个Vanilla Javascript类型的人,但以下情况应该有效。

     //first one 
<?php $a=0;?>
<?php  for ($i=0;$i<5;$i++) {?>
<?php  for ($j=0;$j<5;$j++) {?>

    <input type="text" name="<?php echo 'post1['.$a.'][value1]'?>" id="valuex<?php echo $i.$j;?>" data-num="<?php echo $i.$j;?>" class="entryxy">


<?php $a++;?>
<?php }?>
<?php }?>


   //second one      
   <?php $a=0;?>
<?php  for ($i=0;$i<5;$i++) {?>
<?php  for ($j=0;$j<5;$j++) {?>

    <input type="text" name="<?php echo 'post2['.$a.'][value1]'?>" id="valuey<?php echo $i.$j;?>" data-num="<?php echo $i.$j;?>" class="entryxy">


<?php $a++;?>
<?php }?>
<?php }?>

<script>
    window.onload = function(){
            $(".entryxy").on("change",
                    function(){
                        // get data-number so we know which data set we need to modify
                        var sDataNum = this.getAttribute("data-num");
                        // get the value that needs to be set to opposing textbox
                        var sVal = this.value;
                        // determine if it is x or y that was changed
                        if(this.id.indexOf("valuex") > -1){
                            // Value of X changed
                            var eleY = $(("#valuey" + sDataNum))[0];
                            eleY.value = sVal;
                        }else{
                            // Value of Y changed
                            var eleX = $(("#valuex" + sDataNum))[0];
                            eleX.value = sVal;
                        }
                    }
                );
        };
</script>

我改变了一些事情:

  1. 为了允许事件监听器,我做了所有文本框使用了一个名为“entryxy”的公共类。
  2. 我制作了“valuex ##”和“valuey ##”ID而不是类名,因此可以更轻松地访问这些元素。
  3. 我添加了数据属性,有助于快速识别文本框所属的数据集。 (这样我们就可以在必要时重新分配价值。)
  4. 实际的jQuery和Javascript位于PHP部分末尾的脚本标记中。我还没有测试过它,但是我对它做了很多评论,所以至少它应该会把你推向正确的方向。如果其中的任何内容没有意义,请发表评论,我会尝试解释一下。

答案 2 :(得分:0)

首先,您应该清理一下PHP代码。 然后使用jQuery(这是你问题的最初目的),你可以尝试类似的东西:

<!doctype html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $('input[class^="valuex"]').on('keyup', function() {
                var self = $(this);
                var className = self.prop('class');
                var id = className.substr(-2);
                $('input[class="valuey'+id+'"]').val(self.val());
            });
            $('input[class^="valuey"]').on('keyup', function() {
                var self = $(this);
                var className = self.prop('class');
                var id = className.substr(-2);
                $('input[class="valuex'+id+'"]').val(self.val());
            });
        });
    </script>
</head>
<body>
    <?php
        for ($i = 0; $i < 5; $i++) {
            for ($j = 0; $j < 5; $j++) {
                echo '<input type="text" name="post1[' . $i . '][value1]" class="valuex' . $i . $j . '">';
            }
        }
        for ($i = 0; $i < 5; $i++) {
            for ($j = 0; $j < 5; $j++) {
                echo '<input type="text" name="post2[' . $i . '][value1]" class="valuey' . $i . $j . '">';
            }
        }
    ?>
</body>
</html>