文本字段有值时的Javascript复选框验证

文本字段有值时的Javascript复选框验证,javascript,html,checkbox,Javascript,Html,Checkbox,我正在尝试使用下面的代码。基本上,我需要的是在文本字段(dateshipped)不为空且复选框(close)未选中时发出警报。因此,如果两者都为空,则表单可以提交,但如果文本字段有值,且复选框未选中,则警报将显示。警报应具有继续或取消选项 <script> function validate() { var valid = true; var checkbox = document.getElementById('close').value; var text

我正在尝试使用下面的代码。基本上,我需要的是在文本字段(dateshipped)不为空且复选框(close)未选中时发出警报。因此,如果两者都为空,则表单可以提交,但如果文本字段有值,且复选框未选中,则警报将显示。警报应具有继续或取消选项

<script>
function validate() {
    var valid = true;
    var checkbox = document.getElementById('close').value;
    var text = document.getElementById('dateshipped').value;
    if(!(checkbox || text))
        valid = confirm("Checkbox isn't checked. \n Continue?");
    return valid;
}
</script>

函数验证(){
var valid=true;
var checkbox=document.getElementById('close')。值;
var text=document.getElementById('dateshipped')。值;
如果(!(复选框| |文本))
valid=确认(“未选中复选框。\n是否继续?”);
返回有效;
}
我的表格:

<form id="form" name="form" method="post" onsubmit="return validate();">
<input type="checkbox" name="close" id="close" value="Yes"><label for="close" class="css-label-rma" title="Close this">Close this</label>
<input type="text" name="dateshipped" id="dateshipped" class="datefield" /></label>
<input type="submit" value="submit" />
</form>

关上这个

这是jsfiddle:

恐怕您有几个问题

1)
onsubmit
是表单事件,而不是
按钮
事件。你应该

<form id="form" name="form" method="post" onsubmit="return validate();">
  • 您需要将按钮类型更改为
    submit
  • 检查表格何时提交
  • 运行带有该检查的验证方法
  • validate
    函数中有一些错误。您应该选中
    复选框。选中
    而不是
    复选框。值
    ,并且您应该检查
    文本的字符串长度

    函数验证(){
    var valid=true;
    var checkbox=document.getElementById('close');
    var text=document.getElementById('dateshipped')。值;
    如果(!checkbox.checked | | text.length)
    valid=确认(“复选框和文本为空。\n是否继续?”);
    返回有效;
    }
    var form=document.getElementById('form');
    form.onsubmit=函数(e){
    如果(!validate()){
    e、 preventDefault();//这将停止表单提交。
    返回false;
    }
    警惕('我已提交');
    }
    
    关上这个
    
    好的,我做了更正,但表单还是提交了。同样,仅当文本字段有值且复选框未选中时,我才需要获得警报。非常感谢。@Brasciole:看看这个jsfiddler,看看这是否就是你想要的,也就是我想要的。非常感谢你。
    document.getElementById('close').checked;