追加行添加自动完成jQuery

时间:2017-01-17 08:33:57

标签: javascript jquery jquery-ui autocomplete

我已经在表单上进行了自动填充,可以添加新行。

但是我的自动完成仅锁定第一项。

你能帮助我让自动完成工作在附加行上。

jsFiddle:https://jsfiddle.net/r65x9aj0/3/

使用Javascript:

def run_processes():

print ("starting p1")
print ("starting p2")    
##run_process_1()
##run_process_2()
p1 = Process(target = run_process_1, args = ())
p2 = Process(target = run_process_2, args = ())

p1.start()
p2.start()

print p1, p1.is_alive()
print p2, p2.is_alive()
p1.join()
p2.join()
print ("finished")

HTML:

var globalNewIndex = 0;
var availableAttributes = [
  "account_address",
  "account_address_city",
  "account_address_country",
  "account_address_state",
  "account_address_street1",
  "account_address_street2",
  "account_address_zip",
  "account_email",
  "account_login",
  "account_name",
  "account_number",
  "account_telephone"
];



$(document).ready(function() {
    $('#fixed_name_'+globalNewIndex).autocomplete({
            source: availableAttributes
        }); 
    $("#add").click(function() {
        var newIndex = globalNewIndex+1;
        var changeIds = function(i, val) {
            return val.replace(globalNewIndex,newIndex);
        }

        $('#mytable tbody>tr:last').clone(true).insertAfter('#mytable tbody>tr:last');
        $('#mytable tbody>tr:last input').attr('name', changeIds ).attr('id', changeIds );

           globalNewIndex++;
         $('#fixed_name_'+globalNewIndex).autocomplete({
            source: availableAttributes
        });    
        $('#mytable tbody>tr:last .emptythis').val('');
        $("#mytable tbody>tr:last").each(function() {this.reset();});

      return false;
    });
});

3 个答案:

答案 0 :(得分:1)

以下是public partial class Prod { public string ProdID { get; set; } public string BrandID { get { return ProdID.Split('-')[0]; } } public virtual Brand Brand { get; set; } } public class Brand { public string BrandID { get; set; } public string Name { get; set; } public virtual ICollection<Prod> Prods { get; set; } } 后的更新jsfiddle:

<强> Updated fiddle

我动态初始化自动完成并为新行创建了一个模板,因为克隆函数克隆了自动完成的实例,这是不好的。

这是您的新javascript:

code

答案 1 :(得分:0)

由于您正在动态添加文本框而无法正常工作,而对于动态html,自动完成功能会以不同的方式实例化,如:

var selector = '.searchInput';
$(document).on('keydown.autocomplete', selector, function() {
    $(this).autocomplete(options);
});

答案 2 :(得分:0)

    // previous code
    $('#mytable tbody>tr:last').clone(true).insertAfter('#mytable tbody>tr:last');
    $('#mytable tbody>tr:last input').attr('name', changeIds ).attr('id', changeIds );


    // changed lines of code
    var $newRow = $('<tr>' + $('#mytable tbody>tr:first').html() + '</tr>');
    $newRow.find('input').attr('name', changeIds ).attr('id', changeIds );
    $('#mytable tbody').append($newRow); 

由于克隆(true),代码无效。 我会建议该行的“模板”功能。

至于之前的评论,我不会建议把它.on('keypress', ...,因为每按一次键就会被触发(但是你可以用one只听'一次',但这赢了'解决你的问题,因为它不会在第二次被解雇。