1

我有一个这样的脚本:

  $(function() {
     $(".btn_bookmark").click(function() {

   var name = $("input.???").val(); 
   base_url = '<?php echo base_url() ?>';

    $.ajax({
            url: base_url+"bookmark/bookmark_item/"+name,
            success: function() {
                    // do something on success
            }
         });
    return false;
    });
});

我的表单在 PHP 循环中,如下所示:

foreach($page->result() as $row){
   echo '<form name="" method="post" action="">';
   echo '<input type="hidden" name="'$row->name'" id="'.$row->id.'" size="30" value="'.$row->val.'" />';
   echo '<input type="submit" name="submit" class="btn_bookmark" id="submit_btn" value="Bookmark" />';
   echo '</form>';
}

问题是每个表单隐藏的输入名称、id 和值都与 MySQL 数据库不同/动态。那么如何为输入选择正确的值呢?

4

3 回答 3

2
$(".btn_bookmark").click(function() {
    var name = $(this).prev().val();
    base_url = '<?php echo base_url() ?>';

    $.ajax({
            url: base_url+"bookmark/bookmark_item/"+name,
            success: function() {
                    // do something on success
            }
         });
    return false;
    });
});

这样,您将获得前一个元素,即隐藏的元素。

于 2013-01-17T01:59:15.693 回答
2

而不是抢var name = $("input.???").val();

您可以像这样获取隐藏的输入:

$(this).parent().find('input[type=hidden]').val();

这将获取触发事件的元素的父级(在本例中为表单),然后获取该父级的隐藏输入子级。

于 2013-01-17T02:01:34.607 回答
0

实现与您的不同,但它应该可以工作。

尝试这个:

foreach($page->result() as $row){
   echo '<form name="" method="post" action="">';
   echo '<input type="hidden" name="'$row->name'" id="bkmark'.$row->id.'" size="30" value="'.$row->val.'" />';
   echo '<input type="submit" name="submit" class="btn_bookmark" id="submit_btn" value="Bookmark" onClick="bookmarkThis(\'#bkmark' . $row->id . '\');" />';
   echo '</form>';
}

你的 js 将是:

$(function() {
     boomarkThis = function(someId) {
         var name = $(someId).val();
         base_url = '<?php echo base_url() ?>';

          $.ajax({
                url: base_url+"bookmark/bookmark_item/"+name,
                success: function() {
                        // do something on success
                }
             });
        return false;
        });
     }
于 2013-01-17T01:58:58.760 回答