我想讓複選框的行爲像我的ASP .NET MVC
Web應用程序中的單選按鈕。我有大約20-30個複選框,分爲兩組。例如:檢查/取消選中使用jQuery不起作用
<input type="checkbox" id="@riggingType.RiggingTypeId 1" name="RiggingTypePlus"
value="@riggingType.RiggingTypeId"
checked="@riggingTypeIds.Contains(riggingType.RiggingTypeId)" />
<input type="checkbox" id="@riggingType.RiggingTypeId 2" name="RiggingTypeMinus"
value="@riggingType.RiggingTypeId"
checked="@riggingTypeIds.Contains(riggingType.RiggingTypeId)" />
目標:
我想要的複選框以這樣的方式來運轉,如果被選中一個Plus
複選框,則Minus
自動反之則是聽之任之。我已經寫了下面的代碼來嘗試實現這一功能:
$(":checkbox").change(function() {
var inputs = $(this).parents("form").eq(0).find(":checkbox");
var idx = inputs.index(this);
if (this.name.substring(this.name.length - 4, this.name.length) === "Plus") {
// just trying to check if I am getting the right it
// and I am getting the right id
// alert(inputs[idx + 1].id);
// But this does not work
$("#" + inputs[idx + 1].id).prop('checked', false);
}
});
難道我在這裏做得不對:
$("#" + inputs[idx + 1].id).prop('checked', false);
任何幫助將不勝感激。
我知道我可以使用單選按鈕並按相同的名稱對它們進行分組,但我將這些元素渲染爲一個循環,因此它們都具有相同的名稱但具有不同的值,因此我不想將它們命名爲不同的名稱我在服務器端使用這些數據...有沒有更好的方法來做到這一點?
答:
使用得到這個工作如下:
$(document).ready(function(){
$(":checkbox").on('click', function() {
var $this = $(this);
var inputs = $this.closest("form").find(":checkbox");
if ($this.attr('name').substring(this.name.length - 4, this.name.length) === "Plus" && $this.attr('checked')) {
$this.next().prop('checked', false);
}
else
{
$this.prev().prop('checked', false);
}
});
});
如果你讓小提琴 - 我解決烏爾麻煩(它是錯誤的 - 有任何標籤具有相同的ID - 嘗試創建differents ID – Legendary 2015-04-01 13:15:49
這兩個複選框具有相同的ID。最後一個複選框可能會一直取消選中。 Ids應該始終是唯一的。 – 2015-04-01 13:18:11
@KJPrice哦,明白了,不要注意標籤,ty – Legendary 2015-04-01 13:18:42