Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery用隐藏字段动态替换复选框_Javascript_Php_Jquery_Html_Checkbox - Fatal编程技术网

Javascript 使用jQuery用隐藏字段动态替换复选框

Javascript 使用jQuery用隐藏字段动态替换复选框,javascript,php,jquery,html,checkbox,Javascript,Php,Jquery,Html,Checkbox,由于复选框只有在选中时才会发送其内容,但我的服务器端脚本需要它们(值为“Y”或“N”的选中和未选中字段),因此我需要用相同名称的隐藏输入字段动态替换复选框表单字段(其功能)。所以我需要jQuery脚本,它将执行以下操作: 对于我页面上的每个复选框输入字段,它应该动态插入与复选框同名的隐藏输入字段 它应该将onclick listener添加到所有复选框字段中,当选中复选框时,这些字段会将先前的隐藏字段设置为“Y”,否则设置为“N” 删除复选框输入字段的名称,以避免将表单内容发送到服务器时出现命

由于复选框只有在选中时才会发送其内容,但我的服务器端脚本需要它们(值为“Y”或“N”的选中和未选中字段),因此我需要用相同名称的隐藏输入字段动态替换复选框表单字段(其功能)。所以我需要jQuery脚本,它将执行以下操作:

  • 对于我页面上的每个复选框输入字段,它应该动态插入与复选框同名的隐藏输入字段
  • 它应该将onclick listener添加到所有复选框字段中,当选中复选框时,这些字段会将先前的隐藏字段设置为“Y”,否则设置为“N”
  • 删除复选框输入字段的名称,以避免将表单内容发送到服务器时出现命名冲突(不确定是否确实需要)
因此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”更改以前隐藏的字段。

给定此html

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

创建一个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 = [];
}

我假设您的服务器端是PHP,因为它被标记了。你真的需要这些工作吗?如果复选框的值没有发送到服务器端,您就不能设置“N”吗?类似于:
$chkVal=isset($\u POST['name1'])?'Y':'N'感谢您的逻辑建议,但这是经典的方法,我不能使用它,因为这要求我提前知道服务器脚本中应该有“name1”字段。然后我可以测试它是否设置了。在我的情况下,我不知道会出现哪些字段,我需要显式发送值为“Y”或“N”的字段名。请分享您已经尝试过的内容?你在哪里被卡住了?现在我为每个复选框手动放置隐藏字段。现在我想要的脚本将自动完成它。下面是我在这方面的相关文章,在每个复选框后面都放了一个隐藏字段,名称和值都相同=“false”。然后在服务器上,只检查为每个参数名发送的第一个值。选中的框将发送两个值[checkboxVal,false],而未选中的框将只发送一个[false]。在这里,我应该在复选框字段之前手动插入隐藏字段。我目前的情况是,我只有复选框字段。最终,我可以在提交之前用隐藏字段替换复选框字段。我从上面的代码中假设您已经知道如何动态添加隐藏字段,所以我没有将其作为代码的一部分。这应该在页面加载时发生,而在表单提交时会发生。
function updateInputs() {
    checkboxes.each(function () {
        var name = this.name;
        if (this.checked) {
            myArray[name] = 'Y';
        } else {
            myArray[name] = 'N';
        }
    });
    myArray = [];
}