2012-01-29 130 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

相关问题