0

いくつかのデータを持ついくつかの要素があります。そのための変化するフィールドを作成する必要があります。したがって、この要素のテキストを変更するには、textarea を使用します。すべてがうまく機能していますが、テキスト言語で条件を追加したい場合、何かが正しく機能していません...これは私のコードであり、そのためのいくつかのフィドル( http://jsfiddle.net/qzzKA/ )です。助けてくれてありがとう...

<div class="textchange_box">
    <span class="desc">data<br>data
    </span>
    <textarea name="desc" class="textfield"></textarea>
    <span class="change">change</span>
    <span class="save">save</span>
</div>​ 

そしてjquery:

$(".change").live('click', function () {
    $(this).prev('.textfield').css('display','block');
    $(this).prevAll('.desc').css('display','none');
    $(this).next('.save').css('display','block');
    $(this).css('display','none');
});
$(".save").live('click', function () {
    var default_value = $(this).prev('.desc').text().replace(/\r\n|\r|\n/g,"<br/>");
    var actual_value = $(this).prev('.textfield').text().replace(/\r\n|\r|\n/g,"<br />");
    $(this).prevAll('.textfield').css('display','none');
    $(this).prev('.change').css('display','block');
    $(this).css('display','none');
    if (actual_value.length < 0) {
        $(this).prev('.desc').replaceWith('<span class="desc">' + default_value +'</span>');
    }
    else if (actual_value.length > 0) {
        $(this).prev('.desc').replaceWith('<span class="desc">' + actual_value +'</span>');
    }
});
4

1 に答える 1

3

次の行を置き換えます。

if (actual_value.length < 0) {

これについて:

if (actual_value.length <= 0) {

文字列が空の場合、その長さは負の数ではなくゼロになるためです。

更新:
次の2行の他のエラーがあります:

var default_value = $(this).prev('.desc').text().replace(/\r\n|\r|\n/g,"<br/>");
var actual_value = $(this).prev('.textfield').text().replace(/\r\n|\r|\n/g,"<br />");

次のようになります。

var default_value = $(this).prevAll('.desc').text().replace(/\r\n|\r|\n/g,"<br/>");
var actual_value = $(this).prevAll('.textfield').val().replace(/\r\n|\r|\n/g,"<br />");

したがって、prevAll()の代わりにprev()使用しval()、テキストエリアの代わりに使用しtext()ます。

また、ここで使用する必要がありprevAll()ます:

$(this).prev('.desc').replaceWith('<span class="desc">' + actual_value +'</span>');

したがって、次のようになります。

$(this).prevAll('.desc').replaceWith('<span class="desc">' + actual_value +'</span>');

作業フィドルを参照してください。

基本的に最も一般的なエラーは.prev()、以前のすべての兄弟をトラバースすると考えていることですが、そのためには使用する必要がありますprevAll()

于 2012-11-22T11:33:31.470 に答える