javascript - 当它在数组中时如何设置选择元素数组索引并绑定(bind)到模糊事件

标签 javascript jquery

我有选择 dom 和输入文本框的数组。在输入(特定索引)的模糊事件上想要在相同索引的选择 dom 值中设置元素。

我的绑定(bind)正在工作,但在不同输入框的每个模糊事件之后,它会返回 0。

我无法根据给定索引设置选择值,即(下拉)

JSFiddle

我的代码如下。

$(document).ready(function (){
    var i =1;
    $('#addme').on('click', function(){

        var  test = '<tr class="employee"><td><input type="text" id="emp_id['+i+']" /></td><td><select id="emp_name['+i+']" '
        test += '<option value="-1" >Please Select </option><option value="e0001" >James Smith</option><option value="e0002" >Roger Sm</option>'  
        test +='<option value="e0003" >Elina Lobo</option></select></td></tr>'   
         
        $('#addme').after(test);
        i++;
    });

    $(".employee input").live('blur',function(){
        var inputIndex = $(this).index();
        var inputValue = $(this).val();
        alert("Input Index is :" +  inputIndex + ' and value is ' + inputValue);

        $('#emp_name[inputIndex]').each(function(){
            if(this.value == inputValue){
                $('#emp_name[inputIndex]').val($(this).val()); 
                    return false;
            }
            alert("Please iput valid value");
            $('#emp_name[inputIndex]').val('-1');
        });
    });
});
    </script>
    <table />
    <tr class="employee">
        <td><input class="employee" type="text" id="emp_id[0]" /></td>
        <td><select id="emp_name[0]" name="emp_name">
            <option value="-1" >Please Select </option>
            <option value="e0001" >James Smith</option>         
            <option value="e0002" >Roger Sm</option>
            <option value="e0003" >Elina Lobo</option>
        </select></td>
    </tr> 

    <input type="button" id="addme" value="ADD ME"/> 

  </body>
 </html> 

最佳答案

当您在单击按钮时动态添加元素时,您需要委托(delegate)事件

所以$(".employee input").live('blur',function(){

应该看起来像这样

$(staticContainer).on('blur',".employee input", function(){

staticContainer 是与元素绑定(bind)时已经存在于 DOM 中的元素。

关闭容器可以获得更好的性能。

您的代码也存在多个问题..

最好将行附加到表中,以便选择器返回表内的正确元素。

$('#addme').after(test);

应该是

$('table').append(test);

接下来这个选择器不会替换索引值

$('#emp_name[inputIndex]')

应该是

$('#emp_name[' + inputIndex + ']')

最后,您访问索引的方式是完全错误的。

您正在尝试获取相对于其他元素的当前输入。所以

var inputIndex = $(this).index();

应该看起来像

var inputIndex = $('input').index(this);//这将给出正确的值。

<强> Check Fiddle

关于javascript - 当它在数组中时如何设置选择元素数组索引并绑定(bind)到模糊事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16644528/

相关文章:

javascript - 按键值限制 firebase 返回的对象

javascript - Jquery 切换图标显示更多和更少

php - 如何从我的网站/Web 应用程序连接到安全的 FtP?

javascript - NgIF 的服务很慢

javascript - 为什么使用 "for...in"进行数组迭代是一个坏主意?

javascript - jQuery Resizable Handles 固定位置

jquery - 如何在提交按钮延迟后删除类(class)?

javascript - 赋值后变量(form.onsubmit)仍然为空

javascript - 无法识别的表达式 : jQuery syntax issue

jquery - 刷新后的网页空白