Jquery获取单选按钮旁边文本框的值
Jquery get value of text box next to a radio button
我正在创建一个带有多个单选按钮和文本框的表单。每个文本框都位于单选按钮旁边,如下所示:
<div class="form-group">
<div class="radio">
<label>
<input type="radio" name="correct_answer_id">
Correct
</label>
</div>
<label for="answerswer" class="col-sm-2 control-label">Answer 2</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="answerswer[]" placeholder="Answer" required>
</div>
</div>
表单中有几个单选按钮和文本框对,如上所述。点击单选按钮,我想得到在相应的文本框中写的任何内容
我正在尝试使用Jquery的next()函数,如下所示:
$('input[type="radio"]').click(function(){
if ($(this).is(':checked'))
{
console.log($(this).next('input[type="text"]').val());
}
});
但我的日志显示未定义。我做错了什么?
试试这个:找到无线电的父div并执行next().next()
以获得输入框div
,然后找到输入框以获得值。
注意-您不需要检查if ($(this).is(':checked'))
,因为当您单击单选按钮时,它将始终被检查。
$('input[type="radio"]').click(function(){
var value = $(this).closest('.radio').next().next('.col-sm-10').find('input[type=text]').val();
console.log(value );
});
使用parents()使用以下代码;参见工作小提琴
$('input[type="radio"]').click(function(){
if ($(this).is(':checked'))
{
console.log($(this).parents('div.radio').next().next('div.col-sm-10').find('input[type="text"]').val());
}
});
您应该将想要提交的值放在input
元素的value
属性中。
例如<input type="radio" name="correct_answer_id" value="correct">
您的点击处理程序将更改为:
$('input[type="radio"]').click(function(){
if ($(this).is(':checked'))
{
console.log($(this).val());
}
});
如果有一些值不想放在value属性中,那么最好在输入元素中引用该值,而不是依赖于特定的文档布局。
试试这个
$('input[type="radio"]').click(function(){
if ($(this).is(':checked'))
{
console.log($(this).parent().parent().siblings().find('input[type="text"]').val());
}
});
工作演示
如果您可以稍微更改html,这里有一种不同的方法http://jsfiddle.net/xa9cjLd9/1/
<div class="form-group">
<div class="radio">
<label data-for='answer[]'>
<input type="radio" name="correct_answer_id" />Correct</label>
</div>
<label for="answerswer" class="col-sm-2 control-label">Answer 2</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="answerswer[]" placeholder="Answer" required />
</div>
</div>
$('input[type="radio"]').click(function () {
if ($(this).is(':checked')) {
var data = $(this).closest('label').attr('data-for');
console.log($('input[name=' + '"' + data + '"' + ']').val());
}
});
只需为标签定义一个数据属性,其中包含相关输入的名称。
相关文章:
- 使用谷歌应用程序脚本从工作表中获取值并将其显示在文本框中
- 如何获取经过编辑的文本
- 使用 jQuery 从下拉列表中获取所选文本
- 如何获取文本框组的值,并使用jquery将它们放入(key:Value)数组中
- 使用格式化文本获取 DIV 或跨度的动态宽度高度
- 通过搜索 td 文本获取嵌套表 ID
- 将 HTML 元素的文本获取到数组中
- 如何从响应文本获取 JSON 字符串到 JavaScript 中
- 如何根据选项文本获取选项索引
- 通过其文本获取dom节点
- 如何通过锚文本获取对象
- 在Javascript/JQuery中从超链接文本获取Href
- 如何将函数中的文本获取到此通知警报中
- 根据指定的文本获取标记
- 通过匹配文本获取json数据到数组中
- 如何通过id和输出文本获取选项元素
- 通过相邻的TH内部文本获取TD中的文本
- 如何将任何指定网页中的文本获取到变量中
- 通过内部文本获取所有元素
- 从给定的HTML文本获取JQuery