jQuery选择正确的textarea

时间:2014-07-22 12:59:49

标签: javascript jquery html jquery-selectors

我在选择textarea的值时遇到了一些问题。这是我的HTML:

<tr>
    <td>
        <textarea name="notes" id="3"></textarea>
    </td>
    <td>
        <span class="notesbtn" id="3">save</span>
    </td>
</tr>

我的jQuery代码,我尝试使用触发范围按钮的id(相同)来textarea

$(document).ready(function(){
    $('.notesbtn').click(function(){
        var jid = $(this).attr('id');
        var uid = <? echo $user_info['id'];?>;
        var txt = $('textarea#'+jid).val(); 
        $.ajax({
            type: "POST",
            url: "/ajax/save_anote.php", 
            data: {
                jid: jid,     
                uid: uid,     
                txt: txt
            }, 
            success: function(msg) {
                // window.location.reload();
            }
        })
    }); 

但是我没有得到textarea的val。我的错是什么?

5 个答案:

答案 0 :(得分:2)

请勿使用以数字开头的标识符。

不要两次使用相同的标识符。它们应该是独特的。

<强> HTML

<tr>
    <td>
        <textarea name="notes" id="textarea-3"></textarea>
    </td>
    <td><span class="notesbtn" data-id="3">save</span>
    </td>
</tr>

<强> JS

$('.notesbtn').click(function () {
    var jid = $(this).data('id');
    var uid = <? echo $user_info['id']; ?>;
    var txt = $('#textarea-' + jid).val();
    $.ajax({
        type: "POST",
        url: "/ajax/save_anote.php",
        data: {
            jid: jid,
            uid: uid,
            txt: txt
        },
        success: function (msg) {
            // window.location.reload();
        }
    });
});

以下是演示:http://jsfiddle.net/L6ZRr/1/

答案 1 :(得分:0)

我认为你不能只设置id号码。试试这个

<tr><td><textarea name="notes" id="a3"></textarea></td><td><span class="notesbtn" rel="3">save</span></td></tr>

$(document).ready(function(){

    $('.notesbtn').click(function(){
        var jid = $(this).attr('rel');
        var uid = <? echo $user_info['id'];?>;
        var txt = $('textarea#a'+jid).val(); 
        $.ajax({
            type: "POST",
            url: "/ajax/save_anote.php", 
            data: {jid,uid,txt}, 
             success: function(msg) {
                     //window.location.reload();
            }
        })
    }); 

答案 2 :(得分:0)

id应该是唯一的。

将您的代码重写为:

<tr>
    <td>
        <textarea name="notes" id="textarea3"></textarea>
    </td>
    <td>
        <span class="notesbtn" id="3">save</span>
    </td>
</tr>

因为你正在检索它

var txt = $('textarea#'+jid).val(); 

答案 3 :(得分:0)

您好我已经通过您的代码使用相同的ID,但ID应该是唯一的。无论如何我使用您的代码创建了一个示例..

javascript代码:

$(document).ready(function(){ 
    $('.notesbtn').click(function(){
        var jid = $(this).attr('id'); 
        var txt = $('textarea#'+jid).val(); 
        alert(txt); 
    }); 
});

见工作示例: - http://jsfiddle.net/daL6s/19/

答案 4 :(得分:0)

正如其他答案中正确指出的那样:首先,id应该是唯一的和辅助的,避免id从数字开始。另外,您的问题的典型方法是通过data-属性提供用户数据,因此html将是:

<tr>
    <td>
        <textarea name="notes" id="textarea3"></textarea>
    </td>
    <td>
        <span class="notesbtn" data-textarea="#textarea3">save</span>
    </td>
</tr>

和JavaScript:

// var jid = $(this).attr('id');
var txt = $($(this).data('textarea')).val();

有关详细信息,请参阅jQuery docs