2012-11-29 78 views
0

我有一組使用此語法複選框:JavaScript和PHP不會發揮不錯

echo "<form name=\"myform\" method=\"POST\" action=\"csvbuilder.php\">"; 
echo "<input type=\"checkbox\" name=\"list[]\" value=\"".$res['id']."\" />"; 

在底部,我有一個「檢查所有」按鈕..

echo "<input type=\"button\" name=\"UnCheckAll\" value=\"Uncheck All\" onClick=\"uncheckAll(document.myform.list)\" /> 

其中提到下面的JS腳本..

function checkAll(field) { 
    for (i = 0; i < field.length; i++) 
    field[i].checked = true ; 
} 

這裏的問題: 全部選中按鈕只能當我刪除SQU是來自輸入名稱的括號,即name="list"而不是name="list[]"。我需要括號,否則PHP表單處理程序將無法工作。我曾嘗試在JS中添加括號,即onClick="uncheckAll(document.myform.list[])",但這也不起作用。

如何讓JS和PHP很好地玩?

感謝所有響應者。我特別感謝任何參考文獻/解釋/ jfiddles。

+1

添加類到您的輸入並取消選擇框按其類是方法之一。如何通過多選來做到這一點,我不知道。 – Jelmer

+1

爲了讓它看起來更好,試着在回聲裏面設置''而不是'「,然後你就不需要所有的'\\'。或者使用HEREDOC –

+1

嘗試添加一個_reset_按鈕到'形式,它會按照你的需要做。當然,如果你的元素不是複選框,它們也會被重置。 –

回答

1

它可與document.myform['list[]']訪問:

echo "<input type=\"button\" name=\"UnCheckAll\" value=\"Uncheck All\" onClick=\"uncheckAll(document.myform['list[]'])\" /> 
+0

感謝您的簡單解決方案 –

1

你錯過粘貼checkAll按鈕

JS功能:

function checkAll(frm){ 
    var checkBoxes = frm.elements['list[]']; 
    for (i = 0; i < checkBoxes.length; i++){ 
     checkBoxes[i].checked = (frm.CheckAll.value == "Check All") ? 'checked' : ''; 
    } 
    frm.CheckAll.value = (frm.CheckAll.value == "Check All") ? "Uncheck All" : 'Check All'; 
} 

的OnClick:

echo "<input type=\"button\" name=\"CheckAll\" value=\"Check All\" onClick=\"checkAll(document.myform)\" /> 
+0

感謝您指出了這一點! –

0

試試這個:

function checkAll(fieldName) { 
    var fields = document.getElementsByName(fieldName); 
    for (i=0; i<fields.lengh; i++) { 
     fields[i].checked = true; 
    } 
} 

然後從HT調用此使用ML以下PHP代碼片段:

echo "<input type=\"button\" name=\"UnCheckAll\" value=\"Uncheck All\" onClick=\"uncheckAll('list[]')\" /> 

注意,按鈕的onClick - 函數現在調用checkAll - 函數傳遞元素名稱,而不是元素。