【问题标题】:Auto fill input from another input value从另一个输入值自动填充输入
【发布时间】:2020-03-26 06:04:48
【问题描述】:

我有一个问题:

<table>
    <?php
        $data['kriteria'] = array('IPK', 'SEMESTER', 'PENGHASILAN', 'BEASISWA LAIN');
        $kriteria = array();
        foreach ($data['kriteria'] as $key => $val) {
            $kriteria[$key] = $val['nama'];
        }
    ?>
    <thead>
        <tr>
            <th>Kriteria</th>
            <?php
            foreach ($kriteria as $val) {
                echo '<th>' . $val . '</th>';
            }
            ?>
        </tr>
    </thead>
    <tbody>
        <?php $n = count($kriteria); ?>
        <?php for ($i = 0; $i < $n; $i++): ?>
            <tr>
                <th><?= $kriteria[$i] ?></th>
                <?php for ($j = 0; $j < $n; $j++): ?>
                    <td><input type="text"  class="form-control" id="<?= $kriteria[$j] . $kriteria[$i] ?>" name="<?= $j. $i ?>" value=""></td>
                <?php endfor; ?>
            </tr>
        <?php endfor; ?>
    </tbody>
</table>

这是结果

当我从红色侧输入值时,我希望蓝色侧的值自动填充 如上图 在我写这个问题之前,我试着像这样用 jQuery 进行自动填充

<script type="text/javascript">
    $(document).ready(function () {
        $("#SI").keyup(function () {
            var value = $(this).val();
            $("#IS").val(1/value);
        });
    });
</script>

但它不起作用

【问题讨论】:

  • 也许您正在创建动态控件,以便索引未命中匹配尝试胡椒索引或设置 autocomplete=off
  • $("#SI")$("IS") 是什么? ID 必须是唯一的,至少它们在 for 循环中,但它们不在您的代码中。
  • $kriteria[$key] = $val['nama']; 应该抛出关于未定义索引“nama”的警告,因为$val 将是一个字符串,而不是一个数组。您将 $data['kriteria'] 定义为平面索引数组,而不是该代码上方 3 行的多维关联数组。
  • "应更新问题以包含所需行为、特定问题或错误以及重现问题所需的最短代码。" - 可能将 php 象形文字删除为你在问一个javascript问题
  • id是动态生成的,不会匹配,所以在jquery中按类名使用

标签: javascript php jquery arrays input


【解决方案1】:

如果您想进行数学运算并且只想在第一个输入中输入数字,那么您的 JQuery 是正确的,但是如果您尝试对文本执行相同的操作,那么它将返回 NaN,因为它假设您想要返回“一个除以值”,所以你可以做的是这样,然后正确的第二个函数来做数学:

$(document).ready(function () {
    $("#SI").keyup(function () {
        var value = $("#SI").val();
        $("#IS").val(value)
    });
});

检查一个有效的 JSFiddle here

【讨论】:

  • 请进一步解释 - 是什么让您认为这应该是一个错误?
  • @NicoHaase ,如果你想做数学并且只想在第一个输入中输入数字,这实际上不是错误,但如果你尝试对文本做同样的事情,那么它将返回 NaN ,因为它假设您要返回“一除以值”。我可能应该在答案中指定 =)
【解决方案2】:
<table>
<?php
$kriteria = array('IP', 'SE', 'PE', 'BE');

?>
<thead>
<tr>
    <th>Kriteria</th>
    <?php
    foreach ($kriteria as $val) {
        echo '<th>' . $val . '</th>';
    }
    ?>
</tr>
</thead>
<tbody>
<?php $n = count($kriteria); ?>
<?php for ($i = 0; $i < $n; $i++): ?>
    <tr>
        <th><?= $kriteria[$i] ?></th>
        <?php for ($j = 0; $j < $n; $j++): ?>
            <td><input type="text" class="form-control" index-j="<?= $j ?>"
                       index-i="<?= $i ?>"
                       id="<?= $kriteria[$j] . $kriteria[$i] ?>"
                       name="<?= $j . $i ?>" value=""></td>
        <?php endfor; ?>
    </tr>
<?php endfor; ?>
</tbody>

<script type="text/javascript">
$(document).ready(function () {
    var size = <?=$n ?>;

    for (let i = 0; i < size; i++) {
        for (let j = 0; j <= i; j++) {
            if (i == j) {
                $(`[index-i=${i}][index-j=${j}]`).val(1);
            } else {
                $(`[index-i=${j}][index-j=${i}]`).keyup(function () {
                    var value = $(this).val();
                    $(`[index-i=${i}][index-j=${j}]`).val(1 / value);
                });
            }
        }
    }
});

如果您的数组是动态且更好的编码,那么这是适合您答案的更好解决方案。

【讨论】:

    【解决方案3】:

    谢谢大家的回复,我现在可以解决我的问题了 这是代码

    
    <table>
                    <?php
                    $kriteria = array('IP', 'SE', 'PE', 'BE');
    
                    ?>
                <thead>
                    <tr>
                        <th>Kriteria</th>
                        <?php
                        foreach ($kriteria as $val) {
                            echo '<th>' . $val . '</th>';
                        }
                        ?>
                    </tr>
                </thead>
                <tbody>
                    <?php $n = count($kriteria); ?>
                    <?php for ($i = 0; $i < $n; $i++): ?>
                    <tr>
                        <th><?= $kriteria[$i] ?></th>
                        <?php for ($j = 0; $j < $n; $j++): ?>
                            <td><input type="text"  class="form-control" id="<?= $kriteria[$j] . $kriteria[$i] ?>" name="<?= $j. $i ?>" value=""></td>
                        <?php endfor; ?>
                    </tr>
                    <?php endfor; ?>
                </tbody>
            </table>
    
    
            <script type="text/javascript">
                    $(document).ready(function () {
                        $("#IPIP").val(1);
                        $("#SESE").val(1);
                        $("#PEPE").val(1);
                        $("#BEBE").val(1);
                        $("#SEIP").keyup(function () {
                            var value = $(this).val();
                            $("#IPSE").val(1/value);
                        });
                        $("#PEIP").keyup(function () {
                            var value = $(this).val();
                            $("#IPPE").val(1/value);
                        });
                        $("#BEIP").keyup(function () {
                            var value = $(this).val();
                            $("#IPBE").val(1/value);
                        });
                        $("#PESE").keyup(function () {
                            var value = $(this).val();
                            $("#SEPE").val(1/value);
                        });
                        $("#BESE").keyup(function () {
                            var value = $(this).val();
                            $("#SEBE").val(1/value);
                        });
                        $("#BEPE").keyup(function () {
                            var value = $(this).val();
                            $("#PEBE").val(1/value);
                        });
    
                    });
            </script>
    

    我也包含这个代码来运行 jQuery

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 2021-11-10
      • 2016-03-10
      • 2021-09-05
      • 2013-08-26
      相关资源
      最近更新 更多