你可以在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