如何在焦点上保存最后一个元素的值

How to save the value of the last element on focus

本文关键字:最后一个 元素 保存 焦点      更新时间:2023-09-26

我有什么

我有一个用于订购零件的表单,您可以在键入文章代码时通过 ajax 显示有关零件的信息。这些数据显示在表格中,接下来您可以在表格中选择可用的供应商,然后单击要选择的供应商。

在此之后,您可以选择添加更多重复此过程的部分。

我想要什么

由于当您选择添加更多部件时,输入字段是动态添加的,因此我需要知道正在使用哪个输入。在正常情况下,您将始终使用最后一个输入,但可能会发生您想要更改预先输入的文章代码的情况,因此如果是这种情况,我想为用户提供将供应商更改为相应输入而不是最后一个输入的选项。

我尝试了什么

我想出了使用焦点事件选择输入的想法,这样做的问题是,当输入被聚焦并且比我要去表格并单击另一个供应商时,输入会失去焦点,因此不知道在哪里放置值。

HTML(仅相关代码)

Article code    <input name='article_code[]' type='text' class='article_code'>
Description     <input type='text' class='article_description' name='article_description[]' value='No articlecode specified' READONLY>
Supplier    <input type='text' class='supplier_output' name='supplier_outputt[]' value='No supplier specified'  READONLY>

<table id='supplier_table' class='sortable' width='100%'>
    <THEAD>
        <tr valign='top'>
        <th width='25%'>Supplier</th>
        <th width='25%'>Mainsupplier</th>
        <th width='25%'>Price</th>
        <th width='25%'>Article code</th>
        </tr>
    </THEAD>
    <TBODY >
    </TBODY>
</table>

JavaScript

$('#supplier_table').on('click', 'tbody tr',  function(){
    var tableData = $(this).children('td').map(function() {
        return $(this).text();
    }).get();
    var selectedSupplier = $.trim(tableData[0]);
    var supplier_val;
    if($('.article_code').is(':focus')){
        supplier_val = $(this).closest('tr').next().next().find('.supplier_output');
        $(supplier_val).val(selectedSupplier);
    } else {
        $('.supplier_output').last().val(selectedSupplier);
    }
});

所以基本上我需要将最后一个元素的值存储在焦点上。

不确定我是否正确理解了您的问题。但也许我可以帮助你从另一个方向思考。使用模糊事件。然后将最后一个模糊的文章代码存储在 last_val 变量中:

$('.article_code').on('blur', function(){ last_val = this.value; })