从表单中的多个输入中选择输入?

时间:2014-10-27 21:30:38

标签: jquery ajax post

上下文摘要

  

在加拿大,临时的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"

而且我不太确定如何从这里开始。

我如何从这里开始,我的想法有什么好处?如果是这样,实现这一目标的正确语法是什么?

一些相关的调查结果

1 个答案:

答案 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
    }
});

之后最有问题的是在我找到的生产代码中找到正确的选择器。现在这可以按预期工作了。