目标是使用户在一个注册表格中填写一系列字段,并将其输入内容复制到他们要为其注册的任何其他表格中。与其独立列出每个字段并设置值,我创建了此脚本以基于通用的类名标识字段,并且目标是设置匹配的值。
如果我将fieldValue替换为“ hi”之类的东西,它将很好地工作。 fieldValue在循环期间从每个字段接收一个字符串,因此在名字字段上将其设置为“ travis”。 console.log对于fieldValue也可以很好地输出,但不会设置。
有什么想法吗?
PS:如果您想知道“为什么按类名?”这是因为这些表单的生成方式以及它们的名称字段在构建时都考虑了数组“ registration [1] [field_name]”,因此我在类列表中分配了field_name并使用它来帮助识别。而且客户可能要填写10个表单,其中一些为他们,另一些为其他人,所以用这种方法比试图获得恰好具有其他“我自己”信息的表单放置要容易得多。
$('.copy-myself').change(function(){
if($(this).is(':checked')) {
var currentForm = $(this).parent().closest('.registration .card');
$('.registration .card').not($(this).parent().closest('.registration .card')).each(function(){
var form = $(this);
if($(this).find('input.myself-checkbox').is(':checked')) {
$(form).find('input').each(function(){
var fieldValue = $(this).val(); //ie. "travis"
if($(this).attr("class")){
var myClass = $(this).attr("class").replace(/ /g,'.');
$(currentForm).find('input.'+ myClass).val(fieldValue);
// The following outputs current found field value if available ie "test"
// console.log($(currentForm).find('input.'+ myClass).val());
// This works if I set Hi
// $(currentForm).find('input.'+ myClass).val('Hi');
}
});
}
});
}
});
当前执行的操作是清除字段中的所有现有值,因此当我输入test以确保“ test”已记录在注释行之一中时,它将清除test而不输入任何东西。
更新 在测试“ Hi”期间好一些有趣的事情(它可以很好地填充每个输入元素)。我想在 $(form).find('input')。each(function(){.. 循环中添加一个计数器,并将计数包括在值('hi '+ i)。理想情况下,我应该按顺序看到此打印输出,但是每个输入字段都导致“ Hi42”。因此这可能是我在循环过程中遇到问题的地方,fieldValue与之不符,但是我认为我会看到不正确的数据而不是空字段。它将继续测试。