2012-06-27 56 views
12

我通常使用PHP工作,所以很遗憾,没有一些基本的JS原则。这就是我想完成的一切 - 我看过很多关于这个主题的帖子,但他们通常超出了我的需要。简单的JavaScript复选框验证

这里是我的形式:

<input type="checkbox" name="checkbox" value="check" /> 
<input type="submit" name="email_submit" value="submit" onclick="----??----" /> 

该复选框是一个简单的 “我同意”。我想要按下提交按钮,只有在选中该复选框时才提交。

事情是这样的:我想简单的,欺骗的方式 - 没有方法 - 只是在某些形式的内嵌代码(假设它不是过长?)。这不是一个公共页面,我只需要用这种验证方式快速而简单的事情。如果未选中,它会抛出alert();如果它被选中,它将通过php提交并按照正常进行。

回答

29

你可以使用:

if(!this.form.checkbox.checked) 
{ 
    alert('You must agree to the terms first.'); 
    return false; 
} 

demo page)。

<input type="checkbox" name="checkbox" value="check" /> 
<input type="submit" name="email_submit" value="submit" onclick="if(!this.form.checkbox.checked){alert('You must agree to the terms first.');return false}" /> 
  • 从联事件处理程序返回false将防止默认动作的发生(在这种情况下,提交表单)。
  • !Boolean NOT operator
  • this是提交按钮,因为它是事件处理程序连接到的元素。
  • .form是提交按钮的形式。
  • .checkbox是该窗体中名为“复选框”的控件。
  • .checked如果复选框被选中,假如果该复选框未选中是真实的。
+0

嘿这一个很好,唯一的是,如果这是错误的,我怎么能显示警报? – KickingLettuce

+0

@KickingLettuce:如果复选框是UNchecked(由于'!'运算符),则'!this.form.checkbox.checked'为false。如果您希望在复选框被选中时显示不同的警报,您可以使用'else'语句。 – PleaseStand

4

你可以做这样的事情:

<form action="../" onsubmit="return checkCheckBoxes(this);"> 
    <p><input type="CHECKBOX" name="MyCheckbox" value="This..."> This...</p> 
    <p><input type="SUBMIT" value="Submit!"></p> 
</form> 

<script type="text/javascript" language="JavaScript"> 
<!-- 
function checkCheckBoxes(theForm) { 
    if (
    theForm.MyCheckbox.checked == false) 
    { 
     alert ('You didn\'t choose any of the checkboxes!'); 
     return false; 
    } else {  
     return true; 
    } 
} 
//--> 
</script> 

http://lab.artlung.com/validate-checkbox/

虽然不太清晰恕我直言,这可以无需单独的函数定义就像这样:

<form action="../" onsubmit="if (this.MyCheckbox.checked == false) { alert ('You didn\'t choose any of the checkboxes!'); return false; } else { return true; }"> 
    <p><input type="CHECKBOX" name="MyCheckbox" value="This..."> This...</p> 
    <p><input type="SUBMIT" value="Submit!"></p> 
</form> 
+0

OP询问内联脚本,没有方法。 – tjscience

+0

好吧......将函数体插入onsubmit属性并不难,尽管这样会使其不易读取。我会更新答案以反映该选项。 –

1

如果您的复选框具有 '复选框' 的ID:

if(document.getElementById('checkbox').checked == true){ // code here } 

HTH

3

你可以做到以下几点:

<form action="/" onsubmit="if(document.getElementById('agree').checked) { return true; } else { alert('please agree'); return false; }"> 
    <input type="checkbox" name="checkbox" value="check" id="agree" /> 
    <input type="submit" name="email_submit" value="submit" /> 
</form>​ 

这里是一个工作演示 - http://jsfiddle.net/Ccr2x/

2
var confirm=document.getElementById("confirm").value; 
     if((confirm.checked==false) 
     { 
     alert("plz check the checkbox field"); 
     document.getElementbyId("confirm").focus(); 
     return false; 
     } 
+0

if((confirm.checked == false)plz将其更改为if(confirm.checked == false) –

-2

家伙,你可以很容易做到这种验证。只需要跟踪复选框的ID或名称即可。你可以静态或动态地做到这一点。

对于静态,您可以使用复选框的硬编码标识,并且对于动态,您可以使用该字段的名称作为数组并创建一个循环。

请检查以下链接。你会很容易明白我的观点。

http://expertsdiscussion.com/checkbox-validation-using-javascript-t29.html

感谢

1

如果复选框的ID删除”,然后在 “的onclick” 的事件提交按钮 JavaScript函数可以如下:

html: 
<input type="checkbox" name="Delete" value="Delete" id="Delete"></td> 
<input type="button" value="Delete" name="delBtn" id="delBtn" onclick="deleteData()"> 

script: 
<script type="text/Javascript"> 
    function deleteData() { 
     if(!document.getElementById('Delete').checked){ 
      alert('Checkbox not checked'); 
      return false; 
     } 
</script> 
4

现在没有jquery或php nee DED。只使用“必需的” HTML5输入attrbute喜欢这里

<form> 
     <p> 
      <input class="form-control" type="text" name="email" /> 
      <input type="submit" value="ok" class="btn btn-success" name="submit" /> 
      <input type="hidden" name="action" value="0" /> 
     </p> 
     <p><input type="checkbox" required name="terms">I have read and accept <a href="#">SOMETHING Terms and Conditions</a></p> 
</form> 

,因为它的用户的网络浏览器。这样就验证和防止复选框选择启用之前的任何提交。语言独立的解决方案。

1

另一个简单的方法是创建一个函数并检查复选框是否被选中,并使用jQuery禁用按钮。

HTML:

<input type="checkbox" id="myCheckbox" /> 
<input type="submit" id="myButton" /> 

的JavaScript:

var alterDisabledState = function() { 

var isMyCheckboxChecked = $('#myCheckbox').is(':checked'); 

    if (isMyCheckboxChecked) { 
    $('myButton').removeAttr("disabled"); 
    } 
    else { 
      $('myButton').attr("disabled", "disabled"); 
    } 
} 

现在你有一个按钮被禁用,直到他们选中的复选框,现在你有一个更好的用户体验。我会确保你仍然在做服务器端验证。