2014-03-29 30 views
1

我有不同的形式,併爲每個字段集複選框字段集我有一個復位按鈕,但是當我點擊復位按鈕,每一個複選框復位..什麼javascript代碼我應該使用????復位元件

+1

請出示您的(相關)HTML。 –

+0

您可以在字段集中找到所有複選框,並設置'button.checked = button.defaultChecked;'將其返回到默認的「chechedness」(可能未檢查,但這將允許一些默認選中)。 – RobG

+0

有沒有jQuery? –

回答

0

小提琴:http://jsfiddle.net/9MaLZ/10/

JS + JQ

// checking checkbox 1 for demonstration 
$("#cb1").prop("checked", true); 

// reset checkbox, closet to a reset button (up the dom) 
$("#myform button").click(function(e) { 
    $(this).closest("fieldset").find(':checkbox').attr("checked", false); 
}); 

// total reset 
$("#totalrecall").click(function(e) { 
    $(":checkbox").each(function() { 
     $(this).attr("checked", false); 
    }) 
}); 

// check them all 
$("#iwantthemall").click(function(e) { 
    $(":checkbox").each(function() { 
     $(this).attr("checked", true); 
    }) 
}); 

HTML

<div id="myform"> 
    <fieldset> 
     <input type="checkbox" id="cb1" /> 
     <button type="reset" id="cb1-reset">Reset</button> 
    </fieldset> 
    <fieldset> 
     <input type="checkbox" id="cb2" /> 
     <button type="reset" id="cb2-reset" >Reset</button> 
    </fieldset> 
    <fieldset> 
     <input type="checkbox" id="cb2" /> 
     <button type="reset" id="cb3-reset">Reset</button> 
    </fieldset> 
    <button type="reset" id="totalrecall">RESET ALL</button> 
    <button type="reset" id="iwantthemall">RESET ALL</button> 
</div> 
+0

這並不重新設置爲它們的默認選中的值,它會(可能)只要取消它們。它應該檢查* checked *屬性,因爲設置屬性會更改默認的選中值,但不應更改是否實際選中了該複選框。 – RobG

+0

並且如果默認*被檢查*? – RobG

+0

該OP是「在復位按鈕每個複選框重置」而不是「每個按鈕都設置爲未選中」。 – RobG

0

在普通的JavaScript,你可以使用像下面這樣。它重置在一個字段爲其默認所有的複選框選中狀態,無論是被選中或取消選中:

function upTo(el, tagName) { 
    tagName = tagName.toLowerCase(); 
    do { 
    el = el.parentNode; 
    if (el.tagName.toLowerCase() == tagName) { 
     return el; 
    } 
    } while (el.parentNode) 
} 

function resetField(el) { 
    var fieldset = upTo(el, 'fieldset'); 
    var input, inputs; 
    if (fieldset) { 
    inputs = fieldset.getElementsByTagName('input'); 
    for (var i=0, iLen=inputs.length; i<iLen; i++) { 
     input = inputs[i]; 
     if (input.type == 'checkbox') input.checked = input.defaultChecked; 
    } 
    } 
} 

</script> 


<form> 
    <fieldset> 
    <input type="checkbox" name="cb0" checked> 
    <input type="checkbox" name="cb1"> 
    <input type="button" onclick="resetField(this);" value="Reset field"> 
    </fieldset> 
    <fieldset> 
    <input type="checkbox" name="cb2"> 
    <input type="checkbox" name="cb3" checked> 
    <input type="button" onclick="resetField(this);" value="Reset field"> 
    </fieldset> 
</form> 
+0

我認爲一個jQuery oneliner就是這樣做的:'$(this).closest(「fieldset」)。find(':checkbox' ).attr(「checked」,false);':) –

+0

@ Jens-AndréKoch-所以你加載了4000行代碼,並且仍然不能像復位按鈕那樣工作。 – RobG

+0

克服它。 20行jQuery。測試小提琴:http://jsfiddle.net/9MaLZ/10/ –