2011-05-02 147 views
0
function setReplicate() 
{ 
    $('.replicate').live("click",function(){ 
    var nm=$(this).attr('name'); 
    var cntr=$(this).attr('cntr'); 
    var vpmo=$(this).attr('vpmo'); 
    var vl=$(this).parent().prev().find("select").val(); 
    $('[name="'+nm+'"][vpmo="'+ vpmo + '"]').each(function() { 
    if ($(this).attr("cntr") >= cntr) 
    $(this).parent().prev().find("select").val(vl); 
    }); 
    }); 
} 

有一个系统分配给项目的项目编号。每个系统都有关于它的细节,并通过循环遍历表输出。表格中有一个选择列表 - 有些列表会预填充值,但其他列表则不会。在选择列表和一个带有jQuery选择器的图标绑定在一起,以便单击图标时,选择列表中的值将应用于项目中的其他系统。只要选择列表中的值没有预先填充的值(在页面加载期间从数据库中读取 - noajax或其他操作正在发生),此函数可以很好地工作。没有错误产生,如果我把警报,我得到我期望的值,直到这个jQuery语句在做什么?

if ($(this).attr("cntr") >= cntr) 
    $(this).parent().prev().find("select").val(vl); 
    }); 

所以我怀疑这个问题在这里。

下面的代码为一个ColdFusion定制标记产生,这就是FF看到当我认为生成的源代码:

<select name="resource" id="resource_12345_200002" class="resource_12345" selection=""> 
<option>Donald Duck</option 
<option>Mickey Mouse</option> 
... 
<option>Goofy</option> 
</selected> 

<select name="resource" id="resource_12345_200003" class="resource_12345" selection="Donald Duck"> 
<option select="selected">Donald Duck</option> 
<option>Mickey Mouse</option> 
... 
<option>Goofy</option> 
</select> 

的值,“唐老鸭”应该能够被施加到剩余的从列表中和下面的这一点中选择项目(因此,cntr> = cntr值的原因。)

我在办公室里有人会在早上和我一起看这个,所以不要花太多时间很多时候看着这个,我只是希望能够领先一步

TIA

+1

> =将使用数字。比较文本字符串将不会对您有用。你真的想在琴弦之间进行比较?另外我没有看到任何名为cntr的html属性,以便返回null。 – 2011-05-02 22:15:35

+0

我的标记中没有看到'cntr'或'vpmo'属性,所以如果您提供了该标记,它将帮助我们帮助您。 @Thomas,如果'cntr'与长度相同的数字字符串进行比较,它将工作...例如'if('1'<'5'){alert('true'); } //提醒true',但是'if('11'<'2'){alert('true'); } //提醒true'也会提醒true。 – Mottie 2011-05-02 22:45:48

+0

@ thomas-brashington @fudgey cntr是计数器的缩写,数字长度相同。一个数字的例子是100005. VPMO只是一个文本字符串变量。 '' – HPWD 2011-05-03 13:46:12

回答

0

结果发现一些vpmo号码中有一个尾随空格(vpmo以这种方式导入)。我们对报表应用了修剪,现在按预期执行。感谢评论家伙。