使用Jquery将不同的多个值设置为不同的多个文本框

时间:2015-10-15 07:23:40

标签: jquery

我正在创建一个脚本,管理员可以在其中为所有国内地区添加费用,也可以为国际地区增加费用。场景是: -

管理员点击添加费用按钮。他可以在那里增加费用,费用和交付日。现在,我想将charge的值设置为name = delivery_charge[<?php echo $AddIndex; ?>][charge]的所有文本框,将cost的值设置为name=delivery_charge[<?php echo $AddIndex; ?>][cost]的所有文本框,并设置delivery_days的值到name=delivery_charge[<?php echo $AddIndex; ?>][days]的所有文本框。

我所做的是

function addCharges(type){
var cost = parseFloat($('#modal-cost').val());
var charge = parseFloat($('#modal-charge-box').val());
var days = parseInt($('#modal-days').val());

if(isNaN(cost)){
    cost = 0;
}

if(isNaN(charge)){
    charge = 0;
}

if(isNaN(days)){
    days = 0;
}

if(type == 'domestic'){
    $('.domesticZones :checkbox').prop("checked", true);
    $('.domesticZones input').prop("readonly", false);

   //What code should i put here so that all text box with name delivery_charge[][cost] have value of cost and same for variables charge and days.


}else if(type == 'international'){
    $('.internationalZones :checkbox').prop("checked", true);
}
}

1 个答案:

答案 0 :(得分:0)

使用此:

// find name with [cost] at the end of name
$('input[name$="[cost]"]').val(cost);
// same goes to the others

更新的评论应该可以解决问题,您也可以使用正则表达式尝试此解决方案,但与上面的代码相比,这需要相当多的新行:

$('input[name$="[cost]"]').filter(function(){
  // find the attribute name start with `delivery_charge` 
  // name and not followed by `_`
  var regex = /delivery_charge(?!\_)/;
  if ( regex.test( $(this).attr('name') ) ) return this;              
}).val(cost);

阅读此Doc并查看此Demo