[英]jQuery: Using replace() on value of input not working
https://jsfiddle.net/vxLurdyb/1/
当用户在成员资格下拉列表中选择“是”时,输入的值应从“service_## ####”更改为“成员资格##_####”,我一直在尝试使用 replace(),以及使更改对用户清晰可见,但在视觉和发送表单时都保持不变。
<div class="col">
<div class="form-group col-md-6">
<label class="" for="membership">¿Membership?</label>
<select name="membership" id="membership" class="form-control input-sm">
<option value="0">NO</option>
<option value="1">YES</option>
</select>
</div>
<div class="form-group col-md-6">
<label for="exampleInputEmail1" class="light-label">ID</label>
<input type="text" class="form-control" name="invoice_id" id="invoice_id" value="service_id_19_0022" readonly>
</div>
</div>
$('#membership').change(function(e){
if( $(e.target).val() == 1 ){
changeServiceId();
}
});
function changeServiceId(){
$('#invoice_id').prop('readonly',false);
var invoiceid = $('#invoice_id').val();
console.log(invoiceid);
var invoiceid = invoiceid.replace(/service/, 'membership');
$('#invoice_id').attr('value').replace(/service/, 'membership');
console.log(invoiceid);
$('#invoice_id').prop('readonly',true);
}
如您所见,我尝试了 attr('value') 和 value() 但似乎我做错了什么
问题是您根本没有将值设置为#invoice_id
。 要设置值,我们可以简单地使用.val( value )
,例如:
var invoiceid = invoiceid.replace(/service/, 'membership');
$('#invoice_id').val(invoiceid);
你在这里想多了:
$('#invoice_id').attr('value').replace(/service/, 'membership');
首先,你实际上并没有用你要替换的值做任何事情。 ( .attr()
返回一个值, .replace()
返回一个值,最终最后一个返回的值被忽略。)其次,使用.val()
设置一个值。 您可以简化为:
$('#invoice_id').val(invoiceid);
您可以通过以下任一方式设置值:
$('#invoice_id').val(invoiceid);
或使用attr()
就像您尝试做的那样: $('#invoice_id').attr('value', invoiceid)
请找到修改后的代码https://jsfiddle.net/un9v8xah/
You should change the value on dropdown change.
Thanks
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.