如何使用RegEx按名称选择元素

时间:2016-03-05 06:56:13

标签: javascript jquery regex

我有一张包含一些记录的表格,在每一行tr中,我有两个TD的文本框, 所有文字框都没有IdClass,他们只有一个Name,他们的名字就像下面一样

PurchaseDetails[some number].Quantity
PurchaseDetails[some number].PurchasePrice

像:

PurchaseDetails[1457160526936].Quantity
PurchaseDetails[1457160526936].PurchasePrice

我使用以下代码但不起作用:

var ProductQuantity = $(this).find("input[name=PurchaseDetails[/^[0-9]+$/].Quantity]").val();
var ProductPurchase = $(this).find("input[name=PurchaseDetails[/^[0-9]+$/].PurchasePrice]").val();

我的完整HTML代码是:

 <tr >                                                        
 <td><input type="text" class="form-control" name="PurchaseDetails[1457161853893].Quantity" ></td>
 <td><input type="text" class="form-control" name="PurchaseDetails[1457161853893].PurchasePrice" ></td>
 </tr>

2 个答案:

答案 0 :(得分:1)

如果当前上下文中只有一个元素具有该前缀和后缀($(this)),则可以使用attribute starts with selectorattribute ends with selector

$(this)
    .find('input[name^="PurchaseDetails"][name$="Quantity"]').val();

答案 1 :(得分:1)

您可以使用 filter() 进行使用正则表达式进行过滤

.container-fluid {
    background-size: 100% 100%;
    background-attachment: fixed;
}
// replace `$('input')` to `$(this).find('input')` to avoid searching in global context

var ProductQuantity = $("input").filter(function() {
  return /^PurchaseDetails\[\d+\]\.Quantity$/.test(this.name);
}).val();
var ProductPurchasePrice = $("input").filter(function() {
  return /^PurchaseDetails\[\d+\]\.PurchasePrice$/.test(this.name);
}).val();

console.log(ProductQuantity, ProductPurchasePrice);