将ID添加到按钮,但必须根据无线电输入选择进行更改

时间:2014-10-22 20:40:52

标签: javascript jquery html forms dynamic

编辑添加HTML:不完全相同,因为我不在我办公室了,但你会明白的。

该场景是我有一个网站的一部分,用户可以从中选择他们已保存的多个地址中的一个。为每个地址生成ID,我需要将该ID应用于按钮以提交表单。

我已经知道按钮会在第一次点击时收到ID,但如果我尝试选择其他地址,则ID不会切换。如何让按钮使用最近选择的无线电输入的ID?我正在使用数据属性来选择它。

HTML:
<div>
 <form>
    <input type="radio" data-js="select" id="Test123" /> (id created dynamically)
    <label>Address 1</label>
    <input type="radio" dat-js="select" id="Test124" /> (id created dynamically)
    <label>Address 2</label>
</form>
</div>

<button class="address-continue">Continue</button>

var radioID = $('*[data-js]').attr('id');
var addrContinue = $('.address-continue');

$('*[data-js]').click(function () {
        $(addrContinue).attr('id', radioID);
    });

场景:用户点击地址1,因此ID被放置在地址1的按钮上。用户犯了一个错误,意味着点击地址2.目前当我点击地址2时,按钮上的ID没有更改。它与原始点击保持一致。

我需要继续按钮上的ID才能根据正确的无线电选择进行更改。

2 个答案:

答案 0 :(得分:0)

以下内容应该为您希望相应的元素具有相同的顺序:

$('[data-js]').on('change',function() {
  $('.address-continue').data('id', this.id);
});
$('.address-continue').on('click',function() {
  alert( $(this).data('id') );
});

您不能在文档中为第二个元素指定另一个元素。 ID应该是唯一的;因此我使用了data-id

$('[data-js]').on('change',function() {
  $('.address-continue').data('id', this.id);
});
$('.address-continue').on('click',function() {
  alert( $(this).data('id') );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
 <form>
    <input type="radio" name="address" data-js="select" id="Test123" /> (id created dynamically)
    <label>Address 1</label>
    <input type="radio" name="address" data-js="select" id="Test124" /> (id created dynamically)
    <label>Address 2</label>
</form>
</div>

<button class="address-continue">Continue</button>

答案 1 :(得分:0)

由于id是唯一的使用类

$('*[data-js]').click(function () {
    var addrButton = $('.address-continue');
    addrButton.removeClass(test123);
    addrButton.removeClass(test124);
    radioID = $('*[data-js]').attr('id');
    addrButton.addClass(radioID);
});

另外你的基本问题可能是因为你没有在你的收音机功能中收集你的radioID因此它没有更新所以试试这个

$('*[data-js]').click(function () {
    var radioID = $('*[data-js]').attr('id');
    $(addrContinue).attr('id', radioID);
});