2009-12-18 26 views
8

Tôi đang viết một ứng dụng trực tuyến nơi tôi lưu một số văn bản vào cơ sở dữ liệu.
Có như 5 "textarea" -s và 5 "input type = text" -s.
Tôi cũng đang thực hiện tìm kiếm để dễ dàng tìm và chỉnh sửa các mục nhập DB. Một cửa sổ chọn mới được hiển thị (sử dụng mẫu thử nghiệm và ajax), và khi nhấp vào bất kỳ mục nhập nào của nó, biểu mẫu dưới đây sẽ được điền (đó là cùng một biểu mẫu được sử dụng để thêm kết quả mới). Bây giờ, đây là nơi vấn đề phát sinh ....
Nếu tôi thêm một biểu mẫu mới hoặc chỉnh sửa bất kỳ một trường TEXTAREA hiện có nào đã được sửa đổi, bị khóa hoặc giống như vậy (chỉ văn bản, đầu vào vẫn hoạt động) ... sẽ không tuân theo Javascripts .cập nhật thêm nữa, vì vậy chúng không thay đổi khi tôi chọn mục nhập tiếp theo .... HOẶC LẠI HỌ CHƯA TRÊN FireFox (3.5.something). Nó hoạt động tốt trong IE, nhưng kể từ khi tôi là một người dùng FF và tôi wan't nó làm việc ở đó cũng như tôi tự hỏi nếu ai đó đã đi qua bất kỳ vấn đề tương tự và giải quyết nó một cách dễ dàng.
Vấn đề dường như biến mất khi tôi gọi form.reset(), nhưng điều đó làm rối tung một số mã được tạo ra các trường chọn/tùy chọn, bên cạnh tôi không phải là dữ liệu còn lại.Không thể cập nhật textarea bằng javascript sau khi viết cho nó bằng tay

Với tôi, có vẻ như FF đã quyết định rằng văn bản tôi nhập quan trọng hơn văn bản javascript đang cố gắng nhập, do đó, nó ghi đè lên ... và tôi không thể hiểu tại sao. Tại thời điểm này tôi đổ lỗi .update(), nhưng tôi không chắc chắn làm thế nào để làm điều đó nếu không.
Các trường INPUT dường như có vấn đề với .update (hoặc nó không hoạt động cho tôi), vì vậy tôi phải viết lại chúng .value = (đã thử .value với textareas là tốt, hy vọng rằng sẽ sửa chữa bất cứ điều gì, đáng buồn là không có kết quả).

Vì vậy, có ai có bất kỳ manh mối nào về điều này đang xảy ra và cách khắc phục, mà không phải đặt lại biểu mẫu trên mỗi bước?

+0

Bạn có thể cung cấp một số mã để chúng tôi xem xét không? – Gausie

+0

không cần thiết nữa, vấn đề là với .update() ... tôi đã cố gắng innerHTML và nó làm việc tốt, chỉ cho đá tôi đã cố gắng. Giá trị một lần nữa và nó làm việc tất cả của một bất ngờ ... tôi không có ý tưởng những gì đã xảy ra ngày hôm qua (khi tôi dành toàn bộ buổi chiều về điều này), rằng nó không muốn làm việc như nó (tôi có thể đã sử dụng .text thay vì .value, hoặc có một số lỗi trong PHPs iduno) Anyways xin lỗi đã làm phiền bạn tất cả cho không có gì – RedFury

+0

Tôi nghĩ bạn nên đăng câu trả lời cho câu hỏi của riêng bạn (chỉ cần nói ở trên) và sau đó kiểm tra nó, vì vậy câu hỏi này có thể được xóa khỏi hàng đợi câu hỏi chưa được trả lời – machineghost

Trả lời

2

.value và.innerHTML dường như khắc phục vấn đề

0

Tôi gặp sự cố chính xác này. Cho đến nay tôi đã cố gắng

$('#addofferlink').click(function(){ 
    var offer = "#OFFER_"+$('#offer_id').val()+"#"; 
    $('#message').append(offer); 
}); 

Tôi cũng đã cố gắng,

$('#addofferlink').click(function(){ 
    var e = $('#message').html(); 
    var offer = "#OFFER_"+$('#offer_id').val()+"#"; 
    $('#message').html(e+offer); 
}); 

Vấn đề có vẻ là rằng nếu người dùng nhập vào các textarea (#message) sau đó nhấp chuột vào nút để thêm vào liên kết phục vụ , không có gì được hiển thị. Nhìn vào nguồn, sử dụng Firebug, tôi có thể thấy rằng văn bản thực tế chứa trong vùng văn bản đang được sửa đổi, nhưng không được hiển thị trên màn hình.

Dường như javascript đang thay đổi nội dung html của thẻ, nhưng trình duyệt đang lưu trữ nội dung hiện được nhập vào bộ nhớ (tôi giả định) hoặc ở nơi khác.

Cập nhật textarea sử dụng val (e + offer) sẽ xóa văn bản đã nhập và thay thế bằng liên kết phiếu mua hàng và việc sử dụng innerHTML = e + phiếu mua hàng không hoạt động, cho thấy không có thay đổi nào trong vùng văn bản.


Tôi đã sắp xếp thứ này!

Suy nghĩ của tôi xoay quanh thực tế là vì thẻ chứa văn bản và có thẻ đóng riêng, nên tôi phải lấy nội dung của nó bằng cách sử dụng .html().

Bằng cách sử dụng .val() để lấy nội dung của trường, bạn có thể kéo và cập nhật nội dung một cách đơn giản. Tôi đã kết thúc với những điều sau,

$('#addofferlink').click(function(){ 
    var e = $('#message').val(); 
    var offer = "#OFFER_"+$('#offer_id').val()+"#"; 
    $('#message').val(e+offer); 
}); 
1

Tôi cố định vấn đề kỳ lạ này chỉ đơn giản bằng cách:

document.forms[0].text_area_name.value = "STUFF"; 

Ngay cả sau khi sửa đổi textarea kịch bản sẽ ghi đè lên.

innerHTML không hoạt động đối với tôi sau khi sửa đổi vùng văn bản.

5

Tôi cũng gặp vấn đề tương tự. Khi HTML đang phân tích cú pháp để đối tượng DOM, nội dung của textareainnetHTML của <textarea>

<textarea cols="10" rows="10">Content of textarea</textarea> 

Values ​​document.getElementByTagName('textarea').innerHTMLdocument.getElementByTagName('textarea').value lợi nhuận cùng giá trị này Content of textarea

Nhưng sau khi đối tượng bốc DOM, thay đổi innerHTML giá trị không thay đổi nội dung của textarea. Một giải pháp để thay đổi nó là sửa đổi trường value.

document.getElementByTagName('textarea').value="New content of textarea"; 

hoặc trong jquery

$("textarea").val("New content of textarea"); 
0

Đôi khi bạn có thể muốn hiển thị trong một textarea, một chuỗi cụ thể và để người dùng nhìn thấy nó là gì, sau đó có thể thay đổi nó; nhưng, bạn muốn cho phép họ xem văn bản gốc là gì. Textareas khá khó sử dụng, nhưng thậm chí thay đổi thủ công trong văn bản đã chỉnh sửa cũng có thể đảo ngược bằng cách sử dụng thiết lập này.

<button id="ShowNOWxItmDscptn" onClick="EditItmDesc(1)">What is it now?</button> 
<button id="OpnTAxWriteNewEdit" onClick="EditItmDesc(2)">Write/Edit</button> 
<textarea id="RUBYxDescribe" max="500" width="75" placeholder="Magic"> </textarea> 

// a global variable: 
// UVarDescriptionTxt = ("This is the first line.\r\nSecond line!"); 

function EditItmDesc(x){ 
    console.log("*x* = "+x+"."); 
    console.log("Text to reset : "+UVarDescriptionTxt+"."); 

    var InnyShow = document.getElementById("RUBYxDescribe"); 
    InnyShow.value = UVarDescriptionTxt; 

    if(x == 1) { 
     InnyShow.innerHTML = ""; 
     InnyShow.textContent = ""; 
     InnyShow.innerHTML = UVarDescriptionTxt; 
    } 

    if(x == 2){ 
     InnyShow.value = ""; 
    } 
} 

Cấu trúc trên giải quyết được sự cố đó cho tôi.

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