使用jQuery读取复选框值

时间:2012-04-13 08:07:39

标签: php jquery

我从复选框中读取数据时遇到了一些问题。

 {foreach value=artist2 from=$artist}
                <br />

                   <input type="checkbox" name="artist[]" value="{$artist2.MOVIE_ID}-{$artist2.PERSON_ID}" { in_array array=$item match=$artist2.NAME_SURNAME returnvalue="CHECKED" }>{$artist2.NAME_SURNAME}<br />

                <hr />
                {/foreach}
                   <p align="right">  <a style="float: right" href='javascript:void(null);' onclick="deleteData();" ><input type="submit" name="removeArtistFromMovie" onclick="showMessage('Seçilen oyuncu(lar) başarıyla silindi')" value="Seçilenleri Sil" id="value"</p></a>
                <br >
                  </form>

我会在我的js文件中生成类似的复选框:

我试试这个

function deleteData(){
    var artistIds = new Array();

    $("input[@type=artist[]][@checked]").each(function(){
        artistIds.push($(this).attr('id'));
    });

alert(artistIds);



$.post('/management/deleteDataAjax2', 
       { json: JSON.stringify({'artistIds': artistIds}) },
       function(response){
        alert("Başarıyla silindi");
        window.location.replace(window.location.pathname);
});



}

但是,上面的代码不会选中要检查的复选框的值。为什么?

最后

我认为问题在这里,因为页面没有转到js。

<form name=form1 method=post action=# onsubmit='return validate(this)'>

                <br />

                   <input type="checkbox" name="artist[]" value="{$artist2.MOVIE_ID}-{$artist2.PERSON_ID}"  />{$artist2.NAME_SURNAME}<br />


                <hr />



                {/foreach}
                <p align="right">
                <a style="float: right" href='javascript:void(null);' onclick="deleteData();" ><br />
                    <input type="button" name="checkArtistButton" value="Seçilenleri Sil" id="ajaxCheckbox" /></a></p>
                <br >
                  </form>

这是我的js

function deleteData(){

    var artistIds = [];
$('#ajaxCheckbox').click(function() {
    $("input[name='artist[]']:checked").each(function() {
        artistIds.push($(this).attr('value'));
    });
    alert(artistIds);
});​
​    



$.post('/management/deleteDataAjax2', 
       { json: JSON.stringify({'artistIds': artistIds}) },
       function(response){
        alert("Başarıyla silindi");
        window.location.replace(window.location.pathname);
});



}

3 个答案:

答案 0 :(得分:3)

而不是

$("input[@type=artist[]][@checked]").each(function(){

$("input[name='artist[]']:checked").each(function(){

Working example here

注释

我认为您的意思是获取复选框的价值 - 在查看您的标记时,他们没有id属性 - 使用.val()代替attr('id')来获取值

更新

您现在正在点击锚点设置事件处理程序...更改此

function deleteData() {
    var artistIds = [];
    $('#ajaxCheckbox').click(function () {
        $("input[name='artist[]']:checked").each(function () {
            artistIds.push($(this).attr('value'));
        });
        alert(artistIds);
    });​​

到这个

function deleteData() {
    var artistIds = [];
    $("input[name='artist[]']:checked").each(function () {
        artistIds.push($(this).val());
    });
    alert(artistIds);

deleteData函数已被称为onclick

答案 1 :(得分:1)

使用:checked选择器而不是[@checked](顺便说一句,你没有在CSS属性选择器中使用@)。您还使用了错误的属性选择器作为名称。我也简化了你的代码;您的用例非常适合使用.map(..).get()

var artistIDs = $("input[name='artist[]']:checked").map(function(){
    return this.id;
}).get();

演示:http://jsfiddle.net/ThiefMaster/sBmdC/

答案 2 :(得分:1)

尝试以下代码行:

var artistIds = Array();
$("input[name=artist[]]:checked").each(function(index){
     artistIds[index] = $(this).val();
});

这可能对你有用..