简体   繁体   English

如何在隐藏的输入上添加多值

[英]How to add multi value on input hidden

I have a sample code: 我有一个示例代码:

<input type="hidden" value="" name="stall_id">
<a href='javascript:;' onclick='check(this)' data-id='1'>Add</a>
<a href='javascript:;' onclick='check(this)' data-id='2'>Add</a>
<a href='javascript:;' onclick='check(this)' data-id='3'>Add</a>

My jquery: 我的jQuery:

function check(tr) {
    var id = $(this).data("id");
    $(tr).attr("onclick", "uncheck(this)");
    $(tr).html('Add');
}
function uncheck(tr) {
    var id = $(this).data("id");
    $(tr).attr("onclick", "check(this)");
    $(tr).html('Remove');
}

How to when check/uncheck, value will auto add on input hidden ? 如何在选中/取消选中时将隐藏的值自动添加?

Ex: <input type="hidden" value="1,3" name="stall_id"> if I had checked two value. 例如: <input type="hidden" value="1,3" name="stall_id">如果我检查了两个值。

You don't need to change onclick attribute of a try this code will work fine for you use only single function:- 你并不需要改变的onclick属性a试试这个代码将工作的优良只使用单一的功能: -

function check(tr) {
var id = $(tr).data("id");
var hdn = $('[name="stall_id"]'), val;
var text = $(tr).html();  
if (text == 'Add') {
     val = hdn.val() == '' ? id : hdn.val() + ',' + id;
 } else {
    val = hdn.val().split(',').filter(function (d) {
        return d != id;
    }).join(',');
 }   
 $(tr).html(text == 'Add' ? 'Remove' : 'Add');
   hdn.val(val);
   alert(hdn.val());
 }   

Demo 演示版

input type hidden can only have a literal value. 隐藏的输入类型只能有一个文字值。 If you use a comma separated string, you can elaborate it and transform it in an array. 如果使用逗号分隔的字符串,则可以对其进行详细说明并将其转换为数组。 Alternatively you can use form input arrays. 或者,您可以使用表单输入数组。 You can find some more information here . 您可以在此处找到更多信息。 Basically you'll need to create an input hidden (dynamically) for each value and set the name to "stall_id[]" 基本上,您需要为每个值创建一个隐藏(动态)的输入,并将名称设置为“ stall_id []”

This should work: 这应该工作:

 function toggle(tr) { if ($(tr).hasClass("checked")) { $(tr).removeClass("checked").html("Add"); } else { $(tr).addClass("checked").html("Remove"); } var selected = []; $("a.checked").each(function() { selected.push($(this).data("id")); }); $("input[name=stall_id]").val(selected.join(',')); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="text" value="" name="stall_id"> <a href='javascript:;' onclick='toggle(this)' data-id='1'>Add</a> <a href='javascript:;' onclick='toggle(this)' data-id='2'>Add</a> <a href='javascript:;' onclick='toggle(this)' data-id='3'>Add</a> 

We're attaching a class "checked" to checked elements so that we can simply select all checked elements using jQuery's class selectors. 我们将一个“ checked”类附加到checked元素,以便我们可以使用jQuery的类选择器简单地选择所有checked元素。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM