上下文摘要
在加拿大,临时的SIN以“9”开头,向等待他们罪行的移民提出。
一旦他们收到新的“真实”SIN,我们必须能够根据公民姓名和出生日期更新价值(这对我正在研究的系统来说已足够)。
一旦新公民被添加到合同中,并且输入了他/她的出生日期,就会进行ajax调用以确定匹配的参与者是否匹配,并建议可能与用户匹配确认是否存在真实匹配。
匹配后,系统必须更新现有用户并删除新添加的用户,以避免重复输入。这意味着为了改变给定参与者的SIN,必须在前一步骤中添加新参与者,并且系统报告新创建的参与者并提示用户输入进一步的信息细节,例如出生日期。当“日期时间选择器”关闭时,会调用ajax来查找此匹配,如上所述。
但是,选择新SIN编号项的代码无法按预期工作。它不是定位找到的参与者,而是选择找到的第一个参与者,这实际上是一个“真正的”新参与者。
代码示例
新参与者在网页中列出如下:
<!-- Here is the very new participant -->
<tr id="17" rel="17">
<input type="text" value="SURNAME17, GIVENNAME17">
<input type="text" id="txtSIN17" value="123456789">
</tr>
<!-- Here is the participant I'd like to get the SIN from -->
<tr id="18" rel="18">
<input type="text" value="SURNAME18, GIVENNAME18">
<input type="text" id="txtSIN18" value="487654321">
</tr>
系统选择参与者的方式是:
$("input[id^=txtSIN]").val();
不可避免地总是返回第一次出现,即SIN:123456789
。我想获得另一个SIN:487654321
。
但是,我不能预测tr id
将会不时需要什么,我相信我需要依赖第一个输入文本才能知道{{1} }。
在我考虑之前,我必须提到我已经从底层数据库中收集了名称和临时SIN,同时系统要求匹配。我建立关系的唯一方法是找到匹配的名称和出生日期。
到目前为止......
我想,将我匹配的参与者的值放在一个连接的ListBox值中,按以下步骤操作:
"id"
而且我不太确定如何从这里开始。
我如何从这里开始,我的想法有什么好处?如果是这样,实现这一目标的正确语法是什么?
一些相关的调查结果
答案 0 :(得分:0)
基于@ morissette在我的问题评论中的主张:
如果你需要的不仅仅是:jsfiddle.net/29ov2ynw让我知道......我想给出一个起点而不是给出一个解决方案。帮助每个人学习。
我的问题最好是:
如何使用jQuery循环遍历多个表行?
@ morissette给我的开始挖掘,在这里我想出了解决我的问题。
var participantNameIndex = 1;
var selectedMatch = '987654321 | SURNAME18, GIVENNAME18 | 1986-09-14 | 9';
var existingName = selectedMatch.split('|')[participantNameIndex].trim();
$('table tr').each(function (i, row) {
var newParticipantName = $(':last-child', this).val();
var isMatch = existing == newParticipantName;
if (isMatch) {
var sinId = $(row).attr('id');
var newSinInputName = "input[id^='txtSIN" + sinId +"']";
var newSin = $(newSinInputName).val();
alert(newSin); // Finally obtained the new SIN!!!
return false; // Simple loop break
}
});
之后最有问题的是在我找到的生产代码中找到正确的选择器。现在这可以按预期工作了。