单击事件期间更改的复选框值未被表单数据拾取

Changed checkbox value during click event not picked up by form data

我有一个 "sign up for email updates" 复选框,默认选中值为 "Yes"。如果不勾选,需要设置为"No"。这不是一个完美的解决方案,但这些是需要在提交表单时提交给数据库的值。

HTML:

<input name="emailSignUpCheckbox" id="emailSignUpCheckbox" type="checkbox" value="Yes" onclick="updateSignUpCheckbox()">Sign me up!

Javascript:

var emailSignUpCheckbox = document.getElementById('emailSignUpCheckbox');

function updateSignUpCheckbox(){
    if(emailSignUpCheckbox.checked) {
        emailSignUpCheckbox.value = "Yes";
    }
    else {
        emailSignUpCheckbox.value = "No";
    }
}

复选框的值每次都在更改,我已通过查看 DOM 或在控制台中记录该值来确认。当以选中状态提交时(默认),"Yes" 的值由表单发布到数据库。

但是,如果手动取消选中,复选框的值不会由表单发送到数据库,而是发送一个空白值。

非常感谢任何关于我可能做错的建议!

我希望这可以帮助你,another answer,只提交了 "on" 值,一种解决方案是考虑如果复选框的值不在提交中,则意味着它的值为 "of".