2013-09-30 36 views
0

我有一個表填充了JavaScript,通過Ajax獲取數據。我有一個<tr>模板,我克隆並設置通過ajax請求檢索到的數據內的值。我使用的是Twitter引導程序的popovers,以便用戶可以單擊單元格,該單元格用輸入/選擇等彈出彈出窗口,提示用戶更改單元格值。當我設置這些輸入的值時會出現問題。當我構建每一行時,我將彈出模板中的輸入值設置爲.val('xxx'),但是當我記錄/單擊單元格並查看彈出窗口時,沒有任何更改;相反,如果我把它設置爲.attr('value', 'xxx'),它工作得很好..爲什麼.val('xxx')不工作?jQuery .val('xxx')沒有設置值,但.attr('value','xxx')是?

下面介紹一下它的肉看起來像..

行模板:

.... 
    <td> 
     <div class="last-name popover-toggle"> 
      <span class="vlabel">----</span> 

      <div class="popout"> 
       <input type="text" name="last_name" value=""/> 
       <div class="popout-button-container"> 
        <button type="button" class="btn btn-primary btn-small cancel-field">Cancel</button> 
        <button data-url="{{ url('edit_lead.json') }}" type="button" class="btn btn-primary btn-small save-field">Save</button> 
       </div> 
      </div> 
     </div> 
    </td> 
    .... 

輸入的設定值:

... 
if (data['last_name']) { 
    $nRow.find('.last-name input[name=last_name]').val(data['last_name']);//.attr('value', data['last_name']); 
    $nRow.find('.last-name .vlabel').text(data['last_name']); 
} 
registerPopover($nRow.find('.last-name'), 'Last Name'); 
.... 

註冊酥料餅:

function registerPopover(el, title) { 
    var options = { 
     animation: false, 
     content: el.find('.popout').html(), 
     html: true, 
     trigger: 'manual' 
    }; 
    if (typeof(title) != 'undefined') { 
     options['title'] = title; 
    } 
    el.popover(options); 
} 
+2

很難說出發生了什麼,你能在現場演示中重現問題嗎? – elclanrs

+0

我覺得'$ nRow.find('。last-name')'會返回一組元素。你嘗試過使用'$ nRow.find('。last-name')。each(function(){/ * ... * /});'? –

+0

@AlejandroIván我記錄了'$ nRow.find('。last-name input [name = last_name]')的結果,它只是一個元素,也是這樣想的:/ – bruchowski

回答

1

不知道你的實際問題是什麼,問題對我來說不是很明顯,但是attrval之間有區別。 attr方法設置/更改源中的輸入/元素的attribute,另一方面,您可以使用瀏覽器的檢查工具查看它,val方法設置/更新內存中的呈現屬性,但它不起作用瀏覽器源代碼中原始的source/HTML。例如,如果你做這樣的事情

HTML:

<input type = "text" name="txt" id = "txt" value = "Hello!" /> 

JS:

$('#txt').val('World!').clone().insertAfter($('#txt')); 

並檢查源代碼,然後你會看到在兩個input元素和都具有值屬性Hello!但在屏幕上都有world!Check this detailed answer

+0

我想你可能已經解決了它,以獲取popover的內容,在registerPopover(..)我設置了'content'選項的popover()方法,它使用'element.find('。popout')。 html()',你是說因爲我只是設置'value'屬性值而不是屬性,當調用.html()來檢索popover的html時,那些信息就會丟失? – bruchowski

+0

我只是給了你兩種方法的想法區別,我沒有看到你在你的代碼中使用了'html',並且對這個問題有點困惑。 –

相關問題