我有一个函数可以将值从select写入输入。我正在使用实时(“更改”,触发此功能。
if ($(this).val( ) == 'MyValue') {$(".my_input").val(VarValue);}
这很好但我需要定位最近的输入,因此它只写入那一个输入而不是所有输入。我在下面尝试过的东西不起作用。如果可以,请帮忙,谢谢。
if ($(this).val( ) == 'MyValue') {$(this).closest(".my_input").val(VarValue);}
更新
这是一个指向Jsfiddle的链接,请注意,这里的功能不起作用,但你可以看到我的html。 http://jsfiddle.net/clintongreen/9x6kv/
答案 0 :(得分:1)
更新:最终密码(如果有人需要)
$(document).ready(function(){
var $theme = $("#clonned").clone();
// The Function in Question
var dept_1 = "Person #1, Person #2, Person #3, Person #4, Person #5";
var dept_2 = "Person #6, Person #7, Person #8, Person #9, Person #10";
var dept_3 = "Finance Persons";
var dept_4 = "IT Persons";
var dept_5 = "Marketing Persons";
$(".clone_dept").live("change", function() {
if ($(this).val() == 'Dept #1') {
$(this).closest("tr").find("td:eq(1) .clone_attendees").val(dept_1);
}
if ($(this).val() == 'Dept #2') {
$(this).closest("tr").find("td:eq(1) .clone_attendees").val(dept_2);
}
if ($(this).val() == 'Dept #3') {
$(this).closest("tr").find("td:eq(1) .clone_attendees").val(dept_3);
}
if ($(this).val() == 'Dept #4') {
$(this).closest("tr").find("td:eq(1) .clone_attendees").val(dept_4);
}
if ($(this).val() == 'Dept #5') {
$(this).closest("tr").find("td:eq(1) .clone_attendees").val(dept_5);
}
}).change(); // trigger once if needed
// Clone Function
$(".tr_clone_add").live('click', function() {
var $newone = $theme.clone();
$newone.attr("id", "clonned"+Math.floor(Math.random()*11));
$newone.appendTo('.table_clone');
});
});
答案 1 :(得分:1)
你的小提琴,但它有效:Click here
你的js有问题 - 改变:
$(".clone_dept").live("change", function() { //<-- not really sure why live isn't working
if ($(this).val() == 'Dept #1') {$(".clone_attendees").val(dept_1);}
if ($(this).val() == 'Dept #2') {$(".clone_attendees").val(dept_1);}
if ($(this).val() == 'Dept #3') {$(".clone_attendees").val(dept_1);}
if ($(this).val() == 'Dept #4') {$(".clone_attendees").val(dept_1);}
if ($(this).val() == 'Dept #5') {$(".clone_attendees").val(dept_1);}
}).change(); // trigger once if needed
}); // <-- This shouldnt be here
为:
$(".clone_dept").change(function() {
if ($(this).val() == 'Dept #1') {$(".clone_attendees").val(dept_1);}
if ($(this).val() == 'Dept #2') {$(".clone_attendees").val(dept_2);}
if ($(this).val() == 'Dept #3') {$(".clone_attendees").val(dept_3);}
if ($(this).val() == 'Dept #4') {$(".clone_attendees").val(dept_4);}
if ($(this).val() == 'Dept #5') {$(".clone_attendees").val(dept_5);}
}).change(); // trigger once if needed
虽然这并没有真正解决如何选择最近的输入。在你的小提琴的情况下,它是唯一使用该类的元素。如果要复制和重用此行结构,请使用此结构选择正确的输入。
if($(this).val() == 'Dept #1') {$(this).parent().next("td").children(".clone_attendees").val(dept_1);}
编辑: 更好的是,使用数组来分配正确的值而不是5行if语句。
var dept = ["Person #1, Person #2, Person #3, Person #4, Person #5","Person #6, Person #7, Person #8, Person #9, Person #10","Finance Persons","IT Persons","Marketing Persons"];
为选项标签添加值
<option value=0>Dept #1</option>
然后
$(".clone_dept").change(function() {
if($(this).val() == 'Dept #1') {
$(this).parent()
.next("td")
.children(".clone_attendees")
.val(dept[$(this).val()])
}
}).change(); // trigger once if needed
答案 2 :(得分:0)
如果你确定至少有一个,你可以尝试
if ($(this).val( ) == 'MyValue') {$(".my_input").eq(0).val(VarValue);}
从集合中获取第一个,但它不知道'最接近'
第一个兄弟姐妹?尝试if ($(this).val( ) == 'MyValue') {$(this).siblings(".my_input").eq(0).val(VarValue);}
但是,无论如何,这将会出现在您之前的任何内容。完全取决于“最接近”意味着什么
答案 3 :(得分:0)
假设输入是DOM中的下一个,这应该有效:
if ($(this).val( ) == 'MyValue') {$(this).next().val(VarValue);}