使用jQuery动态替换带有隐藏字段的复选框

时间:2014-09-15 18:29:35

标签: javascript php jquery html checkbox

由于复选框仅在检查时才发送内容,但我的服务器端脚本需要它们(带有值'Y'或'N'的已检查和未检查字段),我需要动态替换复选框表单字段(它们的功能) )具有相同名称的隐藏输入字段。所以我需要jQuery脚本,它将执行以下操作;

  • 对于我页面上的每个复选框输入字段,它应该动态插入与复选框
  • 同名的隐藏输入字段
  • 它应该向所有复选框字段添加onclick监听器,这会在选中复选框时将先前的隐藏字段设置为'Y',否则为'N'<​​/ li>
  • 删除复选框输入字段的名称,以避免在将表单内容发送到服务器时发生命名冲突(不确定是否确实需要)

所以jQuery应该是当前状态:

<input type="checkbox" name="name1" checked="checked" />
<input type="checkbox" name="name2" />

动态替换为:

<input type="hidden" name="name1" value="Y" />
<input type="checkbox" checked="checked" onclick="function()"/>
<input type="hidden" name="name2" value="N" />
<input type="checkbox" onclick="function()"/>

或在提交表单之前用隐藏字段替换复选框字段和相应的值。

function()可以是noname并动态分配给复选框,并根据复选框状态用“Y”或“N”更改以前隐藏的字段。

2 个答案:

答案 0 :(得分:0)

鉴于此html

<input type="hidden" name="myname_hidden" value="" />
<input type="checkbox" name="myname"/>

您可以使用类似这样的jQuery:

$("form").on('submit', function() {
  $('input[type="checkbox"]').each(function(){
    var $t=$(this);
    var isset = $t.prop('checked') ? 'Y' : 'N';
    $('input[name="'+$t.attr('name')+'_hidden"]').val(isset);
  });
});

答案 1 :(得分:0)

如何创建y / n值数组并将该数组发送到服务器?您可以遍历复选框,如果选中此框,则将nameAttribute:Y添加到数组中。如果未选中,只需将数组值设为“N”。

以下是一个例子:

function updateInputs() {
    checkboxes.each(function () {
        var name = this.name;
        if (this.checked) {
            myArray[name] = 'Y';
        } else {
            myArray[name] = 'N';
        }
    });
    myArray = [];
}