繁体   English   中英

jQuery:对输入值使用 replace() 不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM