2012-06-29 111 views
0

我有以下jQuery修改表格單元格時單擊 - 它將使用戶填寫文本輸入和輸入,返回到正常<td>jquery文本輸入行事滑稽

HTML的

<td class="delivered"> 
    {{ title.delivery_date|date:"Y-m-d" }} 
</td> 

JS -

$("td.delivered").click(function() { 
    if ($(this).find('#inp').length == 0) { 
     var before = $(this).text(); 
     var title_id = $(this).parent().attr('id'); 
     var status_type = 'delivery-date' 
     $(this).html($("<input/>", { 
      id: 'inp', 
      style: 'width:70px;', 
      placeholder: 'YYYY-MM-DD', 
      change: function() { 
       selectdone(this, title_id, status_type); 
      } 
     })); 
     $("#inp").focus(); 
     $('#inp').val(before); 
    } 
}); 

以上的js的作品,但有一個關於它的怪癖。

即使輸入元素是70px,它似乎滾動,就好像文本寬度是200px左右。這使得你在第一次點擊td後無法看到placeholder。我該如何做到這一點,光標是總是左衝,文本輸入是每個方式70px。

更新:輸入文字並通過POST發送後輸入內容如下:u'status': [u'\t\t\t\t\t\t\t\t\t\t\t2012-01-01']。換句話說,它似乎是從文本輸入中的11個標籤開始的!爲什麼會發生這種情況,我將如何擺脫這種情況?

+1

什麼是'selectdone'? –

+0

它調用的另一個函數,但它不應該影響上面的js。 – David542

+1

你有幾個在同一頁上嗎?賦予多個元素'inp'的id是一個問題。 –

回答

1

您可以將輸入框包裝在width:70px;overflow:hidden的div中,因此您確定不會看到任何滾動條。

+0

please請參閱更新後的文章 – David542

+1

您應該使用'var before = $(this).text()。replace(/ \ t/g,'');''清理'$(this).text()'中的數據。如果您的輸入標記值中沒有未使用的空格,請查看您的html文件。 –

+0

這就是問題所在 - 感謝您的幫助! – David542