2012-06-27 53 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"); 
    } 
} 

現在你有一個按鈕被禁用,直到他們選中的複選框,現在你有一個更好的用戶體驗。我會確保你仍然在做服務器端驗證。