2012-01-29 126 views
2

我想要在複選框上使用onclick事件執行POST操作之前刪除2個隱藏字段或將它們設置爲null。Javascript - 刪除隱藏字段或在表單提交前將其設置爲空

這是我 -

<input type="hidden" id="ci" name="ci" value="2"/> 
<input type="hidden" id="pg" name="pg" value="prev"/> 

<form:checkboxes path="choices" items="${lookups}" itemValue="id" itemLabel="label" element="li" **onclick="this.form.submit();"**/> 

如何修改我的onclick事件JS來支持呢?

謝謝!

+0

爲什麼要這樣做? – 2012-01-29 13:43:40

回答

4

簡單地改變onclick這樣:

onclick="document.getElementById('ci').value = ''; document.getElementById('pg').value = ''; this.form.submit();" 

您只需要使用元素的ID,然後在他們的值賦給空字符串 - 這仍然會雖然送價值。要禁用任何值,請禁用這些元素:

onclick="document.getElementById('ci').disabled = true; document.getElementById('pg').disabled = true; this.form.submit();" 
2

$("input[type='hidden']").each(function(){

$(this).reset(); 

});

................................. ......................要麼........................... ...........................

以下代碼由javascript組成。這可能工作

oForm = getElementById('form_id');

var frm_elements = oForm.elements;

for (i = 0; i < frm_elements.length; i++)

{

field_type = frm_elements[i].type.toLowerCase(); 
switch (field_type) 
{ 
case "text": 
case "password": 
case "textarea": 
case "hidden": 
    frm_elements[i].value = ""; 
    break; 
case "radio": 
case "checkbox": 
case "select-one": 
case "select-multi": 
default: 
} 

}

+0

那就是JQuery。我認爲他想要普通的JS。 – 2012-01-29 13:44:18

+1

hi ken,現在我也爲JS添加了.. – 2012-01-29 13:56:41

+0

當隱藏字段是唯一感興趣的內容時,您不需要switch語句,但是如果要使用它,則需要一個break語句_before_ hidden case或it也將清除上面列出的所有類型。關於你的jQuery,你確定它有一個重置方法? (如果可以,請提供一個鏈接到doco?) – nnnnnn 2012-01-29 14:07:54

-1

請的onclick叫福調用提交的部分。使用jQuery很容易做到這一點

function doform(){ 
    $.each($('input[type=hidden]'), function(input){ 
     $(input).val(''); 
    }); 
} 

修改你的onclick來調用它。您還可以使用的getElementsByTagName和過濾的類型,甚至直組調用到的getElementById

function doform(){ 
    var i1 = document.getElementById('pg'); 
    i1.value = ''; 
    var i2 = document.getElementById('ci'); 
    i2.value = ''; 
} 
+1

$('input [type =「hidden」]')。val(''); - 你不需要.each() – nnnnnn 2012-01-29 14:11:44

+0

更簡單。我不知道jQuery會隱式地將一個函數應用於一組匹配的節點。 – tkone 2012-01-29 14:19:41

-1

更改您的onclick部分像下面這樣做通過正常訪問DOM。

onclick="javascript:Clicked();" 

然後定義您的onclick函數在客戶端javascript下的head標籤。

<Head> 
<script language=javascript> 
function Clicked() 
{ 
//1. Write code to hide fields 
document.forms[0].submit(); 
} 
</script> 
</Head> 
+0

這並沒有告訴他如何實際隱藏或取消屬於問題一部分的字段。當您生成腳本標記時,您也不需要language = javascript。 – tkone 2012-01-29 13:51:24

+0

@tkone我剛剛解釋了他開始的基本結構。儘管不需要將JavaScript標記作爲標準,但可以使用許多類型的內聯腳本。關於取消領域的答案已經在上面提供。 – 2012-01-30 20:56:26