2014-12-13 78 views
0

我在包含帶有產品信息的表單的頁面上有多個產品。單選按鈕更新之前的jQuery更新之前的輸入值

產品輸入的默認值是產品的名稱,最後附加了默認的CD。如果用戶選擇「數字下載」,則需要更新產品的價值,並將「-CD」交換爲「 - Digital」。

我已經做了一個粗略的jsfiddle,稍微變化一下以顯示隱藏的輸入。您會注意到,兩個輸入都應該是所選產品內的輸入。

http://jsfiddle.net/4ffh9bss/

喝彩!

<div class="product"> 
    <form action="" method="post"> 
     <input class="product-input" name="product" type="hidden" value="Cool music vol 1 - CD" /> 
     <label>Select format</label> 
     <input type="radio" name="type" value="CD" checked="checked">CD 
     <input type="radio" name="type" value="Digital">Digital Download<br/> 
     <input type="submit" class="product-buy" value="Buy now!" /> 
    </form> 
</div> 

<div class="product"> 
    <form action="" method="post"> 
     <input class="product-input" name="product" type="hidden" value="Cool music vol 2 - CD" /> 
     <label>Select format</label> 
     <input type="radio" name="type" value="CD" checked="checked">CD 
     <input type="radio" name="type" value="Digital">Digital Download<br/> 
     <input type="submit" class="product-buy" value="Buy now!" /> 
    </form> 
</div> 


$(".product").each(function() { 
    $('input:radio').bind("change",updateFormat); 

     function updateFormat(e){ 
      e.preventDefault();      
      var $productValue = $('.product-input').val(); 
      var $productValueSplit = $productValue.split('-')[0]; 
      var $radioValue = $("form input[type='radio']:checked").val(); 

      console.log($productValueSplit + ' - ' + $radioValue); 
     } 
}); 
+0

林不知道如果我正確地理解你的問題,但你可以用'.attr()'更新值字段。如'$('#yourProductField')。attr(「value」,「theValueYouWantHere」);' – nmac 2014-12-13 02:51:03

+0

感謝您的回答,隊友。我想我已經成功地更新了價值以反映我想要的價值,但現在我的問題是,我無法一次只爲一種產品做。對單選按鈕的任何更改都會影響所有產品。 – Rich 2014-12-13 02:56:54

回答

1

我不喜歡太多你組織你的HTML的方式。這讓我做些簡單的事情來得到你想要的東西,但這取決於你。我能達到你想要與此代碼是什麼:

$('input:radio').each(function(){ 
    $(this).on("click", function(){ 
     var ind = $(this).closest(".product").index(); 
     var $productValue = $('.product-input').eq(ind).val(); 
     var $productValueSplit = $productValue.split('-')[0]; 
     var $radioValue = $("form").eq(ind).find('input:checked').val(); 
     $('.product-input').eq(ind).val($productValueSplit + ' - ' + $radioValue); 
    }); 
}); 

FIDDLE:http://jsfiddle.net/4ffh9bss/4/

+0

非常感謝Verhaeren!不幸的是我不能改變標記,所以我不得不按原樣使用它。 – Rich 2014-12-13 03:00:36

+0

@Rich找到了。有時我們只需要處理他們給我們的東西。 – Verhaeren 2014-12-13 03:01:38

相關問題