当我使用变量作为选择器时,事件不会触发

<html>
<body>

<h1>RECEIPT</h1>

    <datalist id="codes">
    <?php
    require_once('../../../mysqli_connect.php');
    $query = "SELECT DISTINCT itemcode FROM itemcost";
    $response = @mysqli_query($dbc,$query);

    while($row = mysqli_fetch_array($response)){
        echo    '<option value="' . $row['itemcode'] . '">';
                                                }       
    ?>
    </datalist>

<form action="receipt.php" method="POST">

    <table cellspacing="10" id="tbl">
    <thead>
        <td>ITEM CODE:</td>
        <td>ITEM NAME: </td>
        <td>QUANTITY OF ITEM:</td>
    </thead>
    <tbody>
    <tr>
        <td><input type="text" list="codes" name="Item_Code1" id="setter" size="5" /></td>
        <td><input type="text" name="Item_Name1" id="receiver" size="10"  /></td>
        <td><input type="text" name="Quantity_In1" size="5" /></td>
    </tr>
    </tbody>
    </table>
    <br>
    <br>
    <input type="number" name="rows" id="addrows" />
    <button type="button" id="btn">Add More</button>
    <input type="submit" name="submitted" value="Enter" />
    <input type="text" name="sendtotalrows" id="totalrows" style="visibility:hidden"/>


</form>

<script src="jquery.js"></script>

<script>
    $(function(){

    window.rowcompare = 2;  
    window.previousrownumber = 1;

    $('#setter').change(function(){ $.getJSON('getitemcodename.php',function(itemcodename) {
                                        var selectedItemCode = $('#setter').val();
                                        $('#receiver').val(itemcodename[selectedItemCode]);});});

    $('#btn').on('click',function(){
        var rownumber = $('#addrows').val();
        rownumber = parseInt(rownumber) + window.previousrownumber;

        while( rownumber >= rowcompare){
        $('#tbl').find('tbody').append("<tr><td><input type=\"text\" list=\"codes\" name=\"Item_Code" + rowcompare +"\" id=\"setter" + rowcompare +"\" size=\"5\" /></td><td><input type=\"text\" name=\"Item_Name" + rowcompare +"\" id=\"receiver" + rowcompare +"\" size=\"10\"  /></td><td><input type=\"text\" name=\"Quantity_In" + rowcompare +"\" size=\"5\" /></td></tr>");

        $("#setter" + rowcompare).change(function(){ $.getJSON('getitemcodename.php',function(itemcodename) {
                                                    var selectedItemCode = $("#setter" + rowcompare).val();
                                                        $("#receiver" + rowcompare).val(itemcodename[selectedItemCode]);});});                      
        rowcompare++;
        }
        previousrownumber = rownumber;
        $('#totalrows').val(previousrownumber);
    });

    });
</script>

</body>
</html>

我的问题在于while循环内的这段代码,我尝试将变量连接到Selector。

getitemcode.php仅返回一个键值对

$("#setter" + rowcompare).change(function(){ $.getJSON('getitemcodename.php',function(itemcodename) {
                                                    var selectedItemCode = $("#setter" + rowcompare).val();
                                                        $("#receiver" + rowcompare).val(itemcodename[selectedItemCode]);
});
});                     

正如标题所述,我的活动不会触发。我已经问过类似的问题,下面是我尝试过的答案:

var IcodeID = 'setter' + toString(rowcompare)
var InameID = 'receiver' + toString(rowcompare)

$("#" + IcodeID ).change(function(){ $.getJSON('getitemcodename.php',function(itemcodename) {
                                                    var selectedItemCode = $("#" + IcodeID ).val();
                                                        $("#" + InameID ).val(itemcodename[selectedItemCode]);
});
});
parseInt(rowcompare);
$("#setter" + ${rowcompare}).change(function(){ $.getJSON('getitemcodename.php',function(itemcodename) {
                                                    var selectedItemCode = $("#setter" + ${rowcompare}).val();
                                                        $("#receiver" + ${rowcompare}).val(itemcodename[selectedItemCode]);
});
});                     
parseInt(rowcompare);
$("#setter" + rowcompare).change(function(){ $.getJSON('getitemcodename.php',function(itemcodename) {
                                                    var selectedItemCode = $("#setter" + rowcompare).val();
                                                        $("#receiver" + rowcompare).val(itemcodename[selectedItemCode]);
});
});                     

但是事情是当我尝试这个:

$("#setter" + 2).change(function(){ $.getJSON('getitemcodename.php',function(itemcodename) {
                                                    var selectedItemCode = $("#setter" + 2).val();
                                                        $("#receiver" + 2).val(itemcodename[selectedItemCode]);
});
});                     

有效。任何帮助将不胜感激。

xuhe001 回答:当我使用变量作为选择器时,事件不会触发

我从此链接获得了解决方案:

Passing variable to :eq jquery selector in a while loop

您需要在其中包装使用增量变量的Jquery代码:

(function(rowcompare){Jquery Code})(rowcompare);

像这样:

(function(rowcompare){
            $(".code-input" + rowcompare).change(function(){ $.getJSON('getitemcodename.php',function(itemcodenamestocks) {
                                                         var selectedItemCode = $(".code-input" + rowcompare).val();                            
                                                         $(".code-output" + rowcompare).val(itemcodenamestocks[0][selectedItemCode]);
                                                         $(".stocks-output" + rowcompare).val(itemcodenamestocks[1][selectedItemCode]);
            });
            });
            })(rowcompare);

它有效。

本文链接:https://www.f2er.com/2748742.html

大家都在问