2014-02-19 139 views
-1

這讓我感到非常緊張。現在我已經對我的頭撞了幾天,看起來這應該很簡單。我有一個我正在構建的jQuery EasyUI頁面,並且它有一個數據網格,當您選擇並單擊某個按鈕時,將打開一個對話框以獲取詳細信息。這工作得很好。問題是我想在對話框底部添加一個按鈕鏈接以及「默認」保存和取消按鈕。在jQuery對話框中創建鏈接

這個新的按鈕其實只是一個重定向鏈接到另一個網頁,將顯示所有選項的細節,而不是信息只是一個縮寫位。這是打開對話框的代碼,然後是鏈接按鈕的代碼。

function editUser(){ 
var row = $('#dg').datagrid('getSelected'); 
if (row){ 
    $('#dlg').dialog('open').dialog('setTitle','Prospect Details'); 
    $('#fm').form('load',row); 
    url = 'update_user.php?id='+row.id; 
    $('#dia_name').html(row.Name); 
    $('#pd a').attr('href','prospect_details.php?phone=' + row.Phone); 
    var phone = phoneFormat(row.Phone); 
    $("#dia_phone").html(phone); 
    if (row.message_duration > 0) { 
     $('#hangup').hide(); 
     $('#message').show(); 
     $('#msg_txt').show(); 
    } else { 
     $('#hangup').show(); 
     $('#message').hide(); 
     $('#msg_txt').hide(); 
    } 
} 

現在爲鏈接按鈕的代碼。

<a id="pd" class="easyui-linkbutton" iconCls="icon-search">More Details</a> 

這真的讓我發瘋。我認爲這個問題與editUser函數被調用時鏈接按鈕不存在有關,因爲它駐留在對話窗口中。

+0

笑,我真不」不知道爲什麼easyui仍然存在,真的很明白,不明白爲什麼你不只是得到[jQueryUI](http://jqueryui.com/)...你知道,從jQuery的製造商?很多更好的文檔,甚至是你可以想到的幾乎所有場景的很好的例子。無論是否在文檔中,總是在SO或他們的論壇上。 – SpYk3HH

+1

就像之前所說的,您的選擇器是錯誤的,因爲無論如何錨定標記不能包含另一個錨定標記並且ID必須是唯一的。所以,而不是使用ID作爲選擇器和委託事件這個動態元素 –

回答

1

正如我所提到的,如果<a id="pd" class="easyui-linkbutton" iconCls="icon-search">More Details</a>,在您撥打editUser()時不存在,那麼jQuery Selector將不會產生任何影響。但是,我看到的另一個問題是您的選擇器。

你確定你的意思$('#pd a')

這將拉動一個元素與ID pd然後尋找的<a>inner HTML標籤,如:

<div id="pd"> 
    <a href="..."> 

如果你想要的<a>標籤的ID pd,所有你需要的選擇將$('#pd')


可能的解決方案

如果您a標籤已經存在於HTML製成的editUser()調用之前,那麼所有你需要調整的是:

// CHANGE 
$('#pd a').attr('href','prospect_details.php?phone=' + row.Phone); 
// to 
$('#pd').attr('href','prospect_details.php?phone=' + row.Phone); 

試試這個第一。如果這不起作用,那麼a標記在調用之前不存在,您應該追加它。正如你使用EasyUI,有幾種方法可以做到這一點,但我懷疑前面的工作。如果它沒有:

最簡單的很可能是.append()按鈕,然後使用EasyUI的linkbutton方法風格它。

function editUser() { 
    var row = $('#dg').datagrid('getSelected'); 
    if (row){ 
     $('#dlg').dialog('open').dialog('setTitle', 'Prospect Details'); 
     $('#fm').form('load',row); 
     url = 'update_user.php?id='+row.id; 
     $('#dia_name').html(row.Name); 

     // create variable for link 
     var $href = 'prospect_details.php?phone=' + row.Phone; 
     // create the a tag 
     $('<a />', { id: 'pd', class: 'easyui-linkbutton', href: $href }) 
     // use jQuery Chaining to continue on and add this button to your dialog buttons 
     .prependTo($('#dlg .dialog-button')) 
     // OR, IF YOU MEAN TO APPEND IT TO YOUR FORM USE: 
     /* .appendTo($('#fm')) */ 
     // use EasyUI to make it a styled button matching the others 
     .linkbutton({ iconCls: 'icon-search', text: 'More Details' }); 

     $("#dia_phone").html(phoneFormat(row.Phone)); 
     if (row.message_duration > 0) { 
      $('#hangup').hide(); 
      $('#message, #msg_txt').show(); 
     } 
     else { 
      $('#hangup').show(); 
      $('#message, #msg_txt').hide(); 
     } 
    } 
} 

OR你可以創建對話框創建按鈕,但你需要做的所有對話框按鈕,如:

function editUser() { 
    var row = $('#dg').datagrid('getSelected'); 
    if (row){ 
     $('#dlg').dialog({ 
      buttons: [{ 
       iconCls: 'icon-search', 
       text: 'More Details', 
       handler: function(e) { /* DO WORK */ } 
      }], 
      title: 'Prospect Details' 
     }); // no need to call 'open', default is to open when called 
+0

因此,我仍然堅持如何創建/更新editUser函數中的變量的鏈接URL。我真的不是一個Javascript的人,所以我正在努力。 –

+0

@ScottNipp OK,np,首先,當頁面加載時,或者至少在方法調用editUser之前存在html < SpYk3HH

相關問題