0

我的 jQuery Mobile 页面有一个可折叠的部分,它是从 MS Sql 数据库的 PHP 输出和我喜欢的内容渲染生成的,所以这部分没问题。

在每个部分中,我创建了一个带有 3 个按钮的表单,它们应该具有唯一的 ID:s。所有表单也被创建为在运行时创建一个唯一的 id。

actions.php(将我的元素渲染到 mobilepage ia DIV 中)

 $counter=0; reset counter for ID:s
 while (odbc_fetch_row($rs)){

// data output from Db to make like 10 collapsible with different data
    $html = "";
    $html = "<div data-role='collapsible-set' data-mini='true'>";
        $html.="<div data-role='collapsible' data-mini='true'>";
        $html.="<h3><span style=float:left;><img src='../_pic/$image' alt='$imageText' /> ".substr($Time,0,16)."&nbsp;&nbsp;$Area</span><span style='float:right;' class='ui-btn-up-c  ui-btn-corner-all' cnt>&nbsp;$data&nbsp;</span></h3>";
        $html.="<p>ID:&nbsp;$ID&nbsp;$Id&nbsp;&nbsp;$Status<br />$Status&nbsp;&nbsp;$Description)</p>";

        $html.="<form method='post' action=''>";
        $html.="<button value='action1' id='action1$counter' data-mini='true'      type='Submit'>Take Action1</button>";
           $html.="<button value='action2' id='action2$counter' data-mini='true' type='Submit'>Take Action1</button>";
           $html.="<button value='action3' id='action3$counter' data-mini='true' type='Submit'>Take Action1</button>";
        $html.="<input type='hidden' id='id$counter' name='id' value='$dataName' />";
        $html.="</form>";

        $html.="</div>";
     $html.="</div>";
     echo utf8_encode($html);
     $counter++;  //upcount to make Id:s unique 
} //end While

然后我有这个函数来监听一个提交的按钮:

$(':submit').live('click', function() { 
  var button = $(this).val();
        if (button == 'action1') { 
             $.ajax({ 
                url: '../_php/Functions.php', 
                data: 'button=' + $(this).val()+'&id='+$('#id').val(),  
                async: true,
                beforeSend: function() {
                    $.mobile.showPageLoadingMsg(true);
                },
                complete: function() {
                    $.mobile.hidePageLoadingMsg();
                },
                error: function (request,error) {
                    alert('error');
                }
            });    
        }
    return false;
  });

我似乎无法获得除第一个之外的另一个 ID,因为我需要使所有 ID:在我的表单中都是唯一的,而我现在要做的就是检查:&id='+$('#id').val()。我想做的是将按钮按下的 ID 号链接到我的隐藏字段 ID 号,以便从中获取正确的数据。截至目前,我只得到第一种形式:s id 评估...

如果有人能指出我正确的方向如何实现这一点,我会很感激的。

functions.php(一个 switch 语句正在预测试 submit:ed 操作

function actions1(){    
try {
    if(isset($_GET['id'])){
            do stuff with 'id'
    }else{
            do other stuff with 'id'
    }
} catch(Exception $e) {
   show error
}
}

如果某些部分不清楚,或者您觉得我错过了发布某些部分 - 请告诉我。/谢谢

4

3 回答 3

0

解决方案是通过我的隐藏输入的属性名称。

var id = $(this).closest("form").find(':hidden').val();
于 2013-10-28T11:14:48.220 回答
0

在事件处理程序this中引用元素

$(':submit').live('click', function(){
  var id= this.id;
  var button = $(this).val();
   /* traverse within form to set hidden input, no need to worry about using ID's for them*/
   $(this).closest('form').find('input[name=id]').val(id);
  /* then in ajax */
   data: 'button=' +button+'&id='+id,  

})

不是完整的代码....为简单起见,我留下了一些代码

于 2013-10-27T22:54:51.783 回答
0

您可以使用 jQuery .attr() 函数来获取元素的 id 或任何其他属性值。

 $(':submit').live('click', function() { 
      var button = $(this).val();
      var id = $(this).attr("id");
            if (button == 'action1') { 
                 $.ajax({ 
                    url: '../_php/Functions.php', 
                    data: 'button=' + $(this).val()+'&id='+ id,  
                    async: true,
                    beforeSend: function() {
                        $.mobile.showPageLoadingMsg(true);
                    },
                    complete: function() {
                        $.mobile.hidePageLoadingMsg();
                    },
                    error: function (request,error) {
                        alert('error');
                    }
                });    
            }
        return false;
      });
于 2013-10-27T23:02:21.860 回答