textarea的内容未送达

时间:2014-01-30 15:24:39

标签: javascript jquery html

这是我的HTML,其中包含几个单选按钮之一:

<div>

        <input type="radio" value="3">  <label>Some random text.</label>

        <div class="reason">
            <p>Please state reason:</p>
            <textarea id="reason_3" size="60">Reason stated.</textarea>
        </div>  

</div>

这是我的jQuery不起作用:

var option = 3;
var reason = $("input[value='" + option + "']").next(".reason").has("textarea").val();

我的目标是将textarea的内容放入变量reason。我的jQuery代码以某种方式无法实现这一点,当我写alert(reason)时,我得到的消息是undefined ....我需要textarea的内容用于php脚本......

这里有什么问题???

3 个答案:

答案 0 :(得分:5)

您需要使用find()代替has() - 而不是next(),您需要使用siblings()

var option = 3;
var reason = $("input[value='" + option + "']").siblings(".reason").find("textarea").val();

演示:Fiddle

  • .reason元素不是输入元素的下一个兄弟,它是下一个元素的下一个元素,因此您可以使用.next().next('.reason')或使用siblings()
  • .has()用于过滤后代选择器的元素集,而不是查找后代元素 - 所以请改用.find()

答案 1 :(得分:1)

你需要:

$("input[value='" + option + "']").siblings(".reason").find("textarea").val()

$("input[value='" + option + "']").siblings(".reason textarea").val()

<强> Working Fiddle

答案 2 :(得分:1)

如果您已经为文本区域分配了id,为什么不直接使用它?

var reason = $("#reason_3").val();

或类似的东西:

$("#reason_"+option).val();