2017-06-05 85 views
1

我有多个记录下每一个具有相同的字段,它们都具有相同的名称/ ID,加的recordId。当我按cmdUpdate_xxx时,我检测到哪个记录div,将其分配给'fldTarget'。我知道想检查每个字段(20,所以不想手动这样做)的有效性。我试过jQuery的 - 我如何找到部分ID元素的特定元素

$('#RecordsWrapper') 
    .on("click" , "[id*=cmdUpdate]", "input", function(e){ 
     fldTarget = $(this); 
     fldAccountID = fldTarget.parent().find("#txtAccountID").prop("id");` 
    }) 

...但是fldAccountID返回为undefined。如何找到一个包含'Record001'div下'txtAccountID'的ID的子元素?

<div id='RecordsWrapper'> 
<div id='Record001'> 
    <input type='text' id='txtAccount_001'> 
    <input type='text' id='txtEntry_001'> 
    <input type='text' id='txtValue_001'> 
    <input type='submit' id='cmdUpdate_001'> 
</div> 
<div id='Record002'> 
    <input type='text' id='txtAccount_002'> 
    <input type='text' id='txtEntry_002'> 
    <input type='text' id='txtValue_002'> 
    <input type='submit' id='cmdUpdate_002'> 
</div> 
</div> 

回答

3

使用属性选择:

属性选择器

属性选择器使用给定属性的存在选择的元素或属性值。

REF:https://developer.mozilla.org/en/docs/Web/CSS/Attribute_selectors

REF(这里更多的例子):https://www.w3schools.com/css/css_attribute_selectors.asp

$('input[id^=txtEntry]').css('background', 'green'); 
 

 

 
$('#RecordsWrapper') 
 
    .on("click", "input[id^=cmdUpdate]", "input", function(e) { 
 
    fldTarget = $(this); 
 
    fldAccountID = fldTarget.parent().find("input[id^=txtAccount]").prop("id"); 
 
    console.log('fldAccountID-->' + fldAccountID); 
 
    })
input[id^=txtAccount] { 
 
    background: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id='RecordsWrapper'> 
 
    <div id='Record001'> 
 
    <input type='text' id='txtAccount_001'> 
 
    <input type='text' id='txtEntry_001'> 
 
    <input type='text' id='txtValue_001'> 
 
    <input type='submit' id='cmdUpdate_001'> 
 
    </div> 
 
    <div id='Record002'> 
 
    <input type='text' id='txtAccount_002'> 
 
    <input type='text' id='txtEntry_002'> 
 
    <input type='text' id='txtValue_002'> 
 
    <input type='submit' id='cmdUpdate_002'> 
 
    </div> 
 
</div>

+0

fldAccountID = fldTarget.parent()。find(“id^= txtAccount”)。prop(“id”);不工作,警报()我把行后从未达到,所以它的切割出在这条线?!?! – aSystemOverload

+0

@aSystemOverload'fldTarget'这是什么呢? 'ID ='Record001''? –

+0

好的,我跳过枪,看到你的更新。我现在已经改成了// fldAccountID = fldTarget.parent()找到( “输入[ID^= txtAccount]”)丙( “ID”)。; //这似乎有效,但fldAccountID仍然显示为“未定义” – aSystemOverload

0

既然已经存储在fldTarget当前记录的DIV可以解析该div自己的ID的记录ID?

例如。

var recordID = fldTarget.prop('id').replace('Record', ''); 
var txtAccountID = 'txtAccount_' + recordID; 

或者你可以为每个“记录”添加data-*属性的div持有包含ID NUM这样的:

<div id='Record001' data-id="001"> 
    <input type='text' id='txtAccount_001'> 
    <input type='text' id='txtEntry_001'> 
    <input type='text' id='txtValue_001'> 
    <input type='submit' id='cmdUpdate_001'> 
</div> 
<div id='Record002' data-id="002"> 
    <input type='text' id='txtAccount_002'> 
    <input type='text' id='txtEntry_002'> 
    <input type='text' id='txtValue_002'> 
    <input type='submit' id='cmdUpdate_002'> 
</div> 

而且从像这样的属性获得的价值:

var recordID = fldTarget.data('id'); 
var txtAccountID = 'txtAccount_' + recordID;