2011-01-11 219 views
0

我有一組記錄以表格形式顯示在表單中。在每個記錄有一個刪除複選框 - 在這裏用的是簡體格式形式:刪除確認

<form method="post" action="" id="update-history-form"> 
    Item 1 <input type="checkbox" value="1" name="History[0][delete]"> 
    Item 2 <input type="checkbox" value="1" name="History[1][delete]"> 
    Item 3 <input type="checkbox" value="1" name="History[2][delete]"> 

    <input type="submit" value="Update History" name="update"> 
</form> 

輸入「name」屬性的整數值有助於確定哪些記錄已經被選中刪除。

我想要的是如果任何刪除複選框被選中(提交時),就會顯示JavaScript警報確認。

回答

2
$('#update-history-form').submit(function(){ 
    if ($(this).find('input:checkbox:checked').length){ 
    return confirm("Really delete any of them?"); 
    } 
}); 

這將取消用戶的表單提交不確認確認對話框。

如果您的表單中有非刪除複選框,您可能需要將選擇器修改爲僅限那些名稱爲contains「刪除」的輸入,例如,

$(this).find('input[name*="delete"]:checked') 
+0

謝謝,這個作品pefrect。很快就會接受答案。 – GSTAR 2011-01-11 18:26:11

0

使用jQuery:

$('#update-history-form').submit(function(ev) { 
    ev.preventDefault(); 
    if (this.find("input:checkbox:checked").length == 0 || confirm("Are you sure?")) this.submit(); 
}); 
0
<form method="post" action="" id="update-history-form" onsubmit='return confirmChecks(this);'> 
    Item 1 <input type="checkbox" value="1" name="History[0][delete]"> 
    Item 2 <input type="checkbox" value="1" name="History[1][delete]"> 
    Item 3 <input type="checkbox" value="1" name="History[2][delete]"> 

    <input type="submit" value="Update History" name="update"> 
</form> 
<script type='text/javascript'> 
function confirmChecks(someForm) { 
    var inputList = someForm.getElementsByTagName('input'); 
    var aCheckboxIsChecked = false; 
    for (var i=0; i < inputList.length; i++) { 
    if (inputList[i].type.toLowerCase() == 'checkbox' && inputList[i].checked) { 
     aCheckboxIsChecked = true; 
     break; 
    } 
    } 

    if (aCheckboxIsChecked) { 
    var proceed = confirm('Really delete those things?'); 
    if (!proceed) { 
     return false; 
    } 
    } 
    return true; 
} 
</script>