Используйте event.preventDefault()
для решения проблемы. По сути, это то же самое, что и return true
внутри атрибута элемента HTML, например onsubmit
, это предотвращает поведение по умолчанию, которое обычно происходит. Если вы хотите, чтобы ваше пользовательское поведение, открывающее некоторые URL-адреса в новой вкладке, происходило, вы должны сначала переопределить поведение по умолчанию.
Кроме того, убедитесь, что ваша переменная формы определена где-то, но не уверен, что это так. в вашем коде, потому что его нет во втором примере.
document.getElementById('cbx').addEventListener(
'submit', function checkForm(event) {
//Prevents default action that would normally happen onsubmit
event.preventDefault();
//Define the form element
var form = document.getElementById("cbx");
if (form.cb1.checked) {
window.open('http://google.com/', '_blank');
}
if (form.cb2.checked) {
window.open('http://yahoo.com/', '_blank');
}
return true;
});
<form id="cbx">
<label for="cb1">G</label>
<input name="cb1" type="checkbox">
<label for="cb2">Y</label>
<input name="cb2" type="checkbox">
<input type="submit" value="Submit">
</form>
Код протестирован и работает. (Это не работает во фрагменте из-за того, как фрагменты реагируют на открытие URL-адресов в новых вкладках, но вот работающий JSFiddle .)