2010-04-09 65 views

Trả lời

18

Bạn thực sự có thể chuyển một hàm để cắt chuỗi bạn sẽ chỉnh sửa. Sử dụng cài đặt này trong cài đặt của bạn:

data : function(string) {return $.trim(string)}, 
submit: "Save" 
+0

Tuyệt vời. Điều này thực sự hữu ích. – Jake

+1

Nghiêm túc. Tôi đã thêm điều này vào đối tượng cơ sở của mình mà tôi xây dựng tất cả các đối tượng có thể chỉnh sửa của mình, và bây giờ tôi có thể định dạng trang của mình theo cách mình muốn. Thực sự hữu ích ... – Jake

+0

Đây thực sự là một câu trả lời tuyệt vời! Cảm ơn. –

1

Hmm, thật lạ. Tôi không nhận được vấn đề đó với Jeditable.

Oh well, jQuery có chức năng cắt:

$.trim(" hello, how are you? "); 
12

Tìm thấy lý do. Và nó là điên rồ!

Ở vị trí biên tập sẽ chèn không gian xung quanh văn bản nếu bạn html trông giống như sau

<div id="inplace_edit_this"> 
    This is some text that will be edited in-place. 
</div> 

Và nó sẽ KHÔNG gian chèn xung quanh văn bản nếu html của bạn trông như thế này

<div id="inplace_edit_this">This is some text that will be edited in-place.</div> 

Tôi tự hỏi điều gì gây ra điều này. Điều này có thể do sự khác biệt trong cách trình duyệt và Javascript diễn giải HTML.

+2

... không cố định nguyên nhân gốc rễ của vấn đề, đề nghị Symmitchry của cố định cũng – dmytrivv

+1

... nhưng điều này _is_ câu trả lời nếu bạn sẽ không, hoặc không thể, thay đổi jEditable.js – w4ik

+0

Tôi đồng ý với dmytrivv. Câu hỏi không bao giờ được chỉ định rằng jEditable không thể thay đổi. Tôi đã thử giải pháp ở trên, và tôi vẫn nhận được một không gian ngay từ đầu. Các giải pháp của Johan Bjorling và Symmitchry luôn hoạt động. – ksindi

8

Đây có thể là tin cũ, nhưng tôi đã phải đối mặt với vấn đề tương tự: Tôi chưa biết tại sao, nhưng sau khi lưu đầu vào văn bản đã chỉnh sửa, lần sau tôi nhấp vào nó, 11 dấu cách (mọi thời gian) được chèn trước văn bản có thể chỉnh sửa.

Sau rất nhiều thử và sai, cuối cùng tôi giải quyết vấn đề này bằng cách chỉnh sửa dòng ~ 239 trong file jeditable.js:

content.apply(form, [input_content, settings, self]); 

và thay thế nó bằng:

content.apply(form, [$.trim(input_content), settings, self]); 

(mỗi Baloneysammitch 's đề nghị)

Lưu ý rằng tôi có khá nhiều không có ý tưởng những gì tôi đang làm, nhưng điều này dường như làm việc! Có thể ai đó có nhiều kỹ năng hơn tôi có thể giải thích nơi mà 11 không gian đó có thể đến từ ...

+0

Cảm ơn, điều này đã khắc phục cùng một vấn đề với tôi! Trong trường hợp bạn (hoặc bất kỳ ai khác) chạy vào cùng một vấn đề này với văn bản được chỉnh sửa trước được tìm thấy trong self.revert, tôi đã thực hiện thay đổi tương tự với dòng 260 hoặc hơn, $ .trim() ing giá trị self.revert đặt thành và điều đó đã khắc phục vấn đề khoảng trắng giá trị ban đầu của tôi. – Aaron

+1

Bạn thực sự nên sử dụng phương pháp của Greg DeVore: http://stackoverflow.com/a/9087222/76672 Không cập nhật tệp lõi có thể chỉnh sửa. – Jake

1

Đã một thời gian kể từ khi bất kỳ ai trả lời bài đăng này nhưng tôi gặp phải vấn đề tương tự xu có giá trị. Vấn đề này chỉ xảy ra với tôi trong firefox và safari. IE và chrome dường như không có vấn đề này.

Tôi đã thử đề xuất của Symmitchry về số $.trim() ở dòng 239 và điều này không có tác dụng đối với tôi. Vì vậy, tôi đã làm một số backtracking và tìm ra rằng vấn đề này là lần đầu tiên xuất hiện xung quanh dòng 176 với các dòng:

self.revert = $(self).html();

Vì đây là một cuộc gọi jquery, nó làm cho tôi tự hỏi, nếu có một vấn đề với cách jquery là tương tác với các trình duyệt được đề cập ở trên. Không chắc chắn ...

Tôi thấy rằng bằng cách thêm một số $.trim() vào thời điểm này mọi thứ hoạt động như tôi mong đợi.

Tôi đã tìm thấy như Chirantan đã làm điều đó như thế nào html đã được đặt ra làm một sự khác biệt trong nếu không gian đã có hay không.

3

Tôi đã khắc phục sự cố này với JEditable 1.7.1 trong đơn đăng ký của mình.Giải pháp thực tế là giống với Symmitchry.

Bắt đầu từ hàng 204 có một khối mã xác định cách JEditable có thể tải dữ liệu của nó.

/* set input content via POST, GET, given data or existing value */ 
var input_content; 

if (settings.loadurl) { 
    ... 
} else if (settings.data) { 
    ... 
} else { 
    ... 
} 
content.apply(form, [input_content, settings, self]); 

Thêm jQuery cắt chức năng trước khi hàng cuối cùng (hàng 239 trong phiên bản của tôi)) để bạn có được:

/* set input content via POST, GET, given data or existing value */ 
var input_content; 

if (settings.loadurl) { 
    ... 
} else if (settings.data) { 
    ... 
} else { 
    ... 
} 

try { 
    input_content = input_content.trim(); 
} 
catch(e) { 
    // DO NOTHING 
} 

content.apply(form, [input_content, settings, self]); 

Lý do tại sao tôi đặt nó trong một try-catch là bởi vì khi bạn sử dụng JEditable với textarea hoặc đầu vào của kiểu text input_content về cơ bản là một chuỗi. Khi bạn sử dụng một input_content được chọn là một đối tượng, và sẽ không phản hồi tốt khi được cắt.

Có lẽ có một cách làm đẹp hơn, thay vì sử dụng thử, nhưng công việc đã hoàn thành.

0

Điều này xảy ra nếu định dạng có phân bổ không gian. jEditable xử lý nó với sự tôn trọng và không sửa đổi nội dung của bạn .. ví dụ trong định dạng tự động VS IDE tạo ra những khoảng trống lớn trong đó rendereing HTML là tốt.

NẾU sử dụng jQuery chỉ cắt DOM trước khi gọi jEditable nếu bạn muốn ot đảm bảo là không có khoảng trắng bất cứ nơi nào

$('#BatchTable tbody td').each(function() { 
     $(this).html($.trim($(this).html())); 
}); 

oTable = $('#BatchTable').dataTable({ 
     "bJQueryUI": true 
}); 
0

Trong trường hợp của tôi là giải pháp là để loại bỏ các </input> trong dòng 390 trong file jquery. jeditable.js. Line trước: var input = $('<input type="hidden"></input>'); dòng mà làm việc cho tôi: var input = $('<input type="hidden">');

Các vấn đề liên quan