【问题标题】:Adding input dynamically, jquery become not working动态添加输入,jquery变得不工作
【发布时间】:2015-06-08 21:10:05
【问题描述】:

我一直在搜索,实际上发现了一些类似的问题,但仍然无法解决我的问题。我还在努力学习 jquery,而且还是新手。

无论如何,我正在尝试在表格上动态添加输入。到目前为止,我已经能够使用新的输入文本来显示行的添加。输入文本假设具有自动完成功能。但是新的动态添加的输入永远不会成功显示自动完成选项。

(为了清楚起见,我把代码放到了JSFiddle中,这是链接:

http://jsfiddle.net/yodann/6t74T/637/)

这是我的代码:

<?php
                            echo '<tr class="row_odd"><td class="ui-widget">';
                            echo form_input(array('id' => 'aff[]', 'name' => 'aff', 'value' => '',
                                    'class' => 'form-control auto_form', 'placeholder' => 'Masukkan nama tempat',
                                    'style' => 'width:100%'));
                            echo '</td><td><img src="'.getfrontendlink('images/del_button.png').
                                 '" width="24px" height="auto"></td></tr>';
?>

function addRow() {
    var count = $('#aff_table tr').length;
    var tx = count % 2 == 0 ? 'row_even' : 'row_odd';
    $('#aff_table tr:last').after('<tr class="' + tx + '">' +
        '<td class="ui-widget">'+
        '</td><td><img src="<?=getfrontendlink('images/del_button.png')?>" width="24px" height="auto"></td></tr>');

    var dat = $('#aff_table tr:last').children('td.ui-widget');
    $("input.auto_form:last").clone(true).appendTo(dat);
    $("input.auto_form:last").val("");           
}

<?php 
        if ($datas != '') {
            $i = 0;
            $php_array = array();
            foreach ($datas->result_array() as $row):
                $php_array[$i++] = ($row['pp_id'].'>>'.$row['pp_name'].', '.
                    (strlen($row['address']) > 25 ? substr($row['address'],0,25) : $row['address']).', '.
                    $row['city_name'].', '.$row['province_name']);
            endforeach;

            $js_array = json_encode($php_array);
            echo "var availableTags = ". $js_array . ";\n";
        }
?>

$( ".auto_form" ).autocomplete({
    source: availableTags
});

【问题讨论】:

  • 您好,您似乎正在将 Javascript 和 PHP 代码混合在一起。如果是这种情况,那么您的代码将无法正常工作。如果你不愿意,那你能不能加个更精确的代码,我帮你调试一下。
  • 为什么会这样?因为初始输入运行良好。只有在运行时稍后添加,它永远无法显示自动完成选项。
  • 您好 Dubem,很抱歉误会您。我已经把代码放在jsfiddle上。感谢你。 jsfiddle.net/yodann/6t74T/637
  • 我想你的问题在这里得到了回答stackoverflow.com/questions/24656589/…

标签: javascript jquery html autocomplete


【解决方案1】:

如果我正确理解了问题: 在函数 addRow() 结束时,您应该再次初始化 .autocomplete 属性。 如果您实例化一次自动完成,那么在添加动态输入字段后jquery不会自动添加所需的属性。

function addRow() {
    var count = $('#aff_table tr').length;
    var tx = count % 2 == 0 ? 'row_even' : 'row_odd';
    $('#aff_table tr:last').after('<tr class="' + tx + '">' +
        '<td class="ui-widget">'+
        '</td><td><img src="<?=getfrontendlink('images/del_button.png')?>" width="24px" height="auto"></td></tr>');

    var dat = $('#aff_table tr:last').children('td.ui-widget');
    $("input.auto_form:last").clone(true).appendTo(dat);
    $("input.auto_form:last").val("");  

    $(".auto_form").autocomplete({source: availableTags});      
}

尝试将克隆更改为简单附加: http://jsfiddle.net/rk27xbce/

【讨论】:

  • 不,它不起作用。我之前确实尝试过,但没有运气。
  • 我试过玩你的 jsfiddle,主要问题是克隆,因为你得到相同的属性(名称和 id),而 jquery 需要唯一的 id 才能正常工作。
  • TesiaMedia,非常感谢您的帮助。我终于解决了这个问题。这里要注意两件事,就是放在 document.ready(function) 里面,就像你说的,jquery 需要一个唯一的 id。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多