我的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 () {
});
答案 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) );
});
答案 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());
});