2017-06-05 37 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; 
相關問題