id未知时获取textarea的值

Get value of textarea when id is unknown

我在获取 textarea 的值时遇到问题,该 ID 由数据库中的值填充。 jQuery怎么可能得到?

function updateTextarea(textarea, updateUrl) {
    var field = textarea.attr("data-field");
    var id = textarea.attr("data-id");
    var fieldValue = document.getElementById(id).value;
    textarea.val("Aktualisiere...");
    textarea.attr("readonly", "readonly");

    jQuery.post(updateUrl, jQuery.param({
        bid: id, 
        bfield: fieldValue
    }), function(data) {
        textarea.empty();
        textarea.val(data);
        textarea.removeAttr("readonly");
    });
}

我从哪里得到 textarea:

$('.arrivalssuper_row').on('focus', 'textarea[data-field="SONSTVEREINBARUNGEN"]', function(e) {
    var textarea = $(e.target);
    updateTextarea(textarea, 'ajax/super_departures_sonstVereinbarungen.php');
});

到目前为止我已经尝试过:

var fieldValue = textarea.val(); //didnt work
var fieldValue = textarea.value; //didnt work
var fieldValue = document.getElementById(id).value; //didnt work

我能做什么?有什么想法吗?

尝试以下方法

var fieldValue = textarea.text();

textarea里面没有value属性,它们的值在开始和结束标签之间。

使用

var textarea = $(this);

console.log(textarea.text());

Val 将无法工作,因为它 returns 是一个 "value" 属性。

啊,我想我忽略了我们在这里谈论 ajax。问题是 textarea 变量不存在于 ajax 回调函数的范围内。您应该考虑自动为文本区域分配一个 ID(或与此相关的任何其他属性,但它必须是唯一的),将该 ID 与您的 ajax 请求一起传递,并将其返回给 ajax 回调。然后你可以通过它的id再次获取textarea。

像这样:

$.post(updateUrl, {bid: id, bfield: fieldValue}, function(data){
    $('textarea.'+data.id).text(data.value);
}, 'json');

并且在您的服务器中,您会使用诸如 (PHP)

之类的东西
die(json_encode(array('id' => $_POST['bid'], 'value' => 'whatever')));