我有一系列选择dom和输入文本框。关于输入的模糊事件(特征索引)想要在相同索引的select dom值中设置元素。
我的绑定正在运行,但在每个模糊事件后,不同的输入框正在重新启动0。
我无法根据给定的索引
设置选择值,即(下拉)我的代码正在关注。
$(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>
提前致谢
答案 0 :(得分:1)
您需要委派活动,因为您在点击按钮时动态添加元素。
所以$(".employee input").live('blur',function(){
应该看起来像这样
$(staticContainer).on('blur',".employee input", function(){
staticContainer 是元素与元素绑定时已经在DOM中的元素。
更好地接近容器的性能。
您的代码也存在多个问题..
最好将行附加到表中,以便选择器返回表中的右元素。
$('#addme').after(test);
原来是
$('table').append(test);
接下来,此选择器不会替换索引值
$('#emp_name[inputIndex]')
应该是
$('#emp_name[' + inputIndex + ']')
最后,您访问索引的方式完全错误。
您正试图获取与其他元素相对应的当前输入。所以
var inputIndex = $(this).index();
应该看起来像
var inputIndex = $('input').index(this);
//这将给出正确的价值。
<强> Check Fiddle 强>
答案 1 :(得分:0)
首先,jQuery .Index()意味着找到e的所有兄弟的索引,而不是选择器字段的索引,如果你想这样做,你需要一个选择器参数。 所以
var inputIndex = $(this).index();
应该改为
var inputIndex = $(this).index(".employee input");
然后您的索引部分将正常工作。
其次,我实际上不明白你的模糊事件代码部分。你说你想设置相同的选择dom索引,为什么你比较值?你使用jQuery属性选择器,我没有看到任何匹配元素。我猜你试图选择所有选择doms,你试着在循环警报?我认为这不是一个好主意。
我认为你应该重建这部分,它没有逻辑,现在很难阅读。