jQuery选择器,以和regex开头

时间:2014-02-03 14:20:11

标签: jquery jquery-selectors

我有以下标记:

<div id="contract_data">
    <input type="text" id="" class="required rel_name" />   
    <input type="text" id="" class="required rel_phone" />  
    <input type="text" id="" class="required rel_address" />    

</div>
<div id="invoice_data">
    <input type="text" id="" class="required rel_name" />   
    <input type="text" id="" class="required rel_phone" />
    <input type="text" id="" class="required rel_address" />
</div>

我需要以编程方式将数据从第一个div复制到第二个div。我需要检测字段目的(名称,电话等,并仅将数据复制到适当的字段)。以前我想使用“rel”属性,但我不能再这样了,所以我决定使用css类。

你能帮助我构建jquery选择器吗? 我需要使用jquery的每个函数循环第一个div,并在每个循环迭代中选择第二个div中具有相同rel_class_name属性的input元素。

编辑:

我以前的解决方案,有效(在我被迫放弃输入的“rel”属性之前):

var inputRelElms = thisstep.find("input[rel]"); // selects input with rel attr, in first div 
inputElms.each(function(){ 
var rel = $(this).attr('rel'), val = $(this).val();
var targetElm = relElm.find("input[rel="+rel+"]"); //selects input with same rel in 2nd div
if(targetElm.val() == ''){
    targetElm.val(val);
}
}

4 个答案:

答案 0 :(得分:0)

$('#contract_data input').each(function (index) {
    $('#invoice_data input:eq(' + index + ')').val(this.value);
});

<小时/> 在OP的评论

之后更新

Fiddle Demo

$('#contract_data input').each(function (index) {
    var cls = $(this).prop('class').match(/rel_.*\s?/g);
    $('#invoice_data input.' + cls).val(this.value);
});

答案 1 :(得分:0)

尝试

$('button').click(function () {
    //iterate through each input in contract
    $('#contract_data input').each(function () {
        //using a regex find the rel_* class name
        var clazz = this.className.match(/\b(rel_.*?)\b/)[1];
        //copy the value to the input element in invoice with the same class
        $('#invoice_data .' + clazz).val(this.value)
    })
})

演示:Fiddle

答案 2 :(得分:0)

JSFIDDLE DEMO

$('#btn').click(function () {
    $('#invoice_data input').each(function () {
        var targetclass = '.' + this.className.split(" ").join('.');
        var targetvalue = $('#contract_data ' + targetclass).val();
        $('#invoice_data '+ targetclass).val(targetvalue);
    });
});

答案 3 :(得分:0)

你需要遍历第一个div集合中的每个输入框,在另一个div中找到相应的类输入框并分配适当的值。

请在下面找到相同的代码:

$('#contract_data input').each(function(){
    var rel_class = $(this).attr('class').split(" ")[1];
    var inv_inputBox = $('#invoice_data').find('input.'+rel_class);
    if(typeof inv_inputBox !== "undefined" && inv_inputBox !== null){
      $(inv_inputBox).val($(this).val());
    }
 });