你可以在onclick代碼添加return false;
:
<button onclick='$("#myField").addToArray("21"); return false;'>
爲了防止提交。
我想你應該問一個單獨的問題,但我無論如何都會潛入這個問題。我修改了HTML in the jFiddle。由於您使用的是jQuery,我利用了click事件處理程序。最初,我創建了一個處理程序來查看需要什麼代碼。它看起來像最初這樣:
$("#strength").click(function() {
event.preventDefault();
if ($('#goals').val().indexOf(',strength') >= 0) {
$('#goals').val($('#goals').val().replace(',strength', ''));
$(this).removeClass('button');
$(this).addClass('buttonSelected');
} else {
$('#goals').val($('#goals').val() + ',strength');
$(this).removeClass('buttonSelected');
$(this).addClass('button');
}
});
這是一個好的起點找出所需的代碼。但是我不想重複每個按鈕的代碼。所以我將我知道的代碼作爲其他按鈕的代碼進行了分解。因此,它是這樣的:
$("#strength").click(function() {
event.preventDefault();
toggle(',strength', this);
});
function toggle(str, thisObj) {
if ($('#goals').val().indexOf(str) >= 0) {
console.log(str + ' is already selected');
$('#goals').val($('#goals').val().replace(str, ''));
$(thisObj).removeClass('buttonSelected');
$(thisObj).addClass('button');
} else {
console.log(str + ' is about to be selected');
$('#goals').val($('#goals').val() + str);
$(thisObj).removeClass('button');
$(thisObj).addClass('buttonSelected');
}
}
然後,它是非常簡單的用一些重複的代碼來處理額外的按鈕:
$("#weight").click(function() {
event.preventDefault();
toggle(',weight', this);
});
$("#tone").click(function() {
event.preventDefault();
toggle(',tone', this);
});
您可以減少重複,但我累了飢餓。希望這可以幫助你!
我想也將應用的CSS類更改爲按鈕。 [New Fiddle](http://jsfiddle.net/FlyingDog/yo49c9ko/) 此前,CSS開關正在工作,但不再是。建議? 我只需要獲取數組中選定的值,並反映它們是否未選中,然後從數組中移除。我試着將addToArray的trogger添加到我現有的toggleClass中,但失敗了。 – FlyingDog