jQuery - 如何动态更改值?

时间:2012-01-11 13:37:45

标签: jquery

我的html代码中有:

<input class="hidd" type="radio" name="org1" value="1" />
<input class="hidd" type="radio" name="org1" value="2" />
<input class="hidd" type="radio" name="org1" value="3" />

<input type="hidden" id="crc" name="crc" value="20120109|0" />

我想让jQuery检测用户选择了哪个项目,然后根据公式设置值: 如果用户选择值为“1”的单选按钮,则id =“crc”的输入值应为:“20120109 | 1”而不是“20120109 | 0”。换句话说 - 在签名之前保留所有数字“|”并仅更改此符号“|”后面的值。我怎样才能做到这一点?也许从id =“crc”取值,删除最后一个号码并添加新号码?或者以其他方式?

$('.hidd').click(function () {

});

10 个答案:

答案 0 :(得分:2)

试试这个:

$('.hidd').click(function () {
    var crc = $("#crc").val().split("|");
    $("#crc").val(crc[0] + "|" + $(this).val());
});

或涵盖选择选项的所有可能方法:

$('.hidd').change(function () {
    var crc = $("#crc").val().split("|");
    $("#crc").val(crc[0] + "|" + $(this).val());
});

答案 1 :(得分:1)

$('.hidd').click(function () {
    var v = $('#crc').val().split('|');
    $('#crc').val(v[0] + '|' + $(this).val());
});

答案 2 :(得分:1)

使用jQuery的val()方法,字符串的split()方法,你会得到类似的东西:

var crc = $('#crc');
var radio = $(':radio[name="org1"]');
crc.val(crc.val().split('|')[0] + '|' + radio.val());

如果您希望在单选按钮的值更改时触发此操作,请执行以下操作(jQuery 1.7 +):

$(':radio[name="org1"]').on('change', function(){
    var crc = $('#crc');
    crc.val(crc.val().split('|')[0] + '|' + $(this).val());
});

答案 3 :(得分:1)

这应该这样做

$('.hidd').change(function () {
  var crc = $('#crc');
  var value = crc.val();
  crc.val( value.split('|')[0] + '|' + this.value );
});

演示 http://jsfiddle.net/gaby/cmCS9/


或正则表达方式

$('.hidd').change(function () {
  var crc = $('#crc');
  var value = crc.val();
  crc.val( value.replace(/\d+$/, this.value) );
});

演示 http://jsfiddle.net/gaby/cmCS9/1/

答案 4 :(得分:0)

$('.hidd').click(function () {
   $("#crc").val('20120109|' + $(this).val());
});

答案 5 :(得分:0)

$('.hidd').click(function () {

     $('#crc').val('20120109|' + $(this).val());
});

答案 6 :(得分:0)

$('.hidd').click(function () {
    if($(this).is(":checked")) {
        $("#crc").val($("#crc").val().replace("/|[0-9]/","|" + $(this).val()));
    }
});

答案 7 :(得分:0)

使用regexp

   $('.hidd').click(function () {
        var crc = $("#crc"),
            $this = $(this);
        if($this.is(":checked")) {
            crc.val( crc.val().replace("/[0-9]$/", $this.val());
        }
    }

答案 8 :(得分:0)

你可能想要考虑超越jQuery到JavaScript正则表达式的强大功能:     “20120109 | 0” .match( “[0-9] * \ |”) 将返回“20120109 |”。

将它与jQuery和要求结合起来:

$('.hidd').change(function () {
    var crc = $("#crc"),
        old = crc.val(),
        num = $(this).val(),
        pfx = old.match("[0-9]*\\|"),
        nvl = pfx + num;
    crc.val(nvl);
    // here you will want to return true or false
});

答案 9 :(得分:-1)

  $('.hidd').change(function () {
    var previousVal=$("input[type='hidden']").val();
    $("input[type='hidden']").val(previousVal+$(this).val());
});