Jquery获取一个或多个复选框值

时间:2013-08-31 15:50:47

标签: php jquery zend-framework2

你好我有html表,我列出了数据库结果。所有数据库项都有自带复选框,其值为项目ID:

<td> <input type="checkbox" id="row" value="<?php echo $this->escapeHtml($item->id);?>"> </td> 

现在我想把一个或多个已检查的项目和该值放在我的网址中,就像上一个参数一样。

<a onclick="return Form.deleteItem(this);" href="<?php echo $this->url('phonebook', array('action'=>'edit', 'id' => '1'));?>">
    <?php echo $this->escapeHtml('Edit');?>
</a> 

我希望像这样在url中添加值。

http://www.example.com/edit/1

因此,如果用户检查一个项目并单击编辑如何将该值放在url中,就像上一个参数

一样

我试试这个但是不行:

deleteItem: function(obj) {
    $('input[type=checkbox]').change(function(e){
        e.preventDefault();
        if ($("#row").is(':checked')) {
            //read line
            var queryString = $("#row").val();
            // Loop 
            var s = $("#row").siblings();
            $.each(s, function() {
                // see if checked
                if ($("#row").is(":checked")) {
                    queryString += 'OR' + $("#row").val();
                }
            });

            console.log(queryString);

            // Append to url 
        }
    });

},

2 个答案:

答案 0 :(得分:0)

我希望我帮到你。这是一个如何实现这一目标的例子。此代码会将所有选定值以逗号分隔为editdelete路由。

<强> HTML

<label><input class="row" type="checkbox" value="1"> 1</label>
<label><input class="row" type="checkbox" value="2"> 2</label>
<label><input class="row" type="checkbox" value="3"> 3</label>
<label><input class="row" type="checkbox" value="4"> 4</label>

<a class="action" href="http://www.example.com/edit/">Edit</a> 
<a class="action" href="http://www.example.com/delete/">Delete</a> 

<强>的JavaScript

$('a.action').click(function() {
    var v = $('input.row:checked').map(function () { return this.value; }).get().join(',');

    $(this).attr('href', $(this).attr('href') + v);
});

映射和加入值的代码来自this answer

<强>演示

Try before buy

答案 1 :(得分:0)

insertusernamehere绝对正确。您的HTML无效,jQuery函数只返回id为“row”的第一个复选框。这是一个例子:

HTML:

Row Checkboxes: <br />
<input id="row" type="checkbox" name="checkboxOne" value="yes" />
<input id="row" type="checkbox" name="checkboxTwo" checked="checked" value="yes" />
<br />
Test checkboxes:<br />
<input id="test" checked="checked" type="checkbox" name="checkboxThree" value="yes" />
<input id="test" type="checkbox" name="checkboxFour" value="yes" />

JS:

//returns false, because it gets the value of only the first #row checkbox
console.log($('#row').is(':checked'));

//returns true, because it only gets the checked attribute of the first #test checkbox
console.log($('#test').is(':checked'));

//only returns the first #row box
console.log(document.getElementById('row'))

请参阅小提琴:http://jsfiddle.net/Br85c/1/