8

应该有一个简单的解决方案。我需要按名称获取输入元素并设置其值。

以下 Javascript 不起作用:

x = document.getElementsByName($('#questions').val());
x.value=this.value;  

有没有使用 JQuery 的简单解决方案?

4

6 回答 6

13

描述

您正在混合普通的 javascript 和 jQuery。使用属性选择器。

查看我的示例和这个jsFiddle 演示

样本

html

<input type="text" name="nameOfTheInputElement"/>

jQuery

$(function() {
    $("input[name='nameOfTheInputElement']").val("your value");
});
​

编辑

如果您出于某种原因想要更改名称是另一个元素中的值的元素,请执行此操作。jsFiddle 演示

html

<input type="text" id="questions" value="nameOfTheInputElement"/>    
<input type="text" name="nameOfTheInputElement"/>

​<strong>jQuery

$(function() {
    var name = $("#questions").val();
    $("input[name='"+name +"']").val("your value");
});​

更多信息

于 2012-04-26T18:41:54.940 回答
3

getElementsByName()返回一个节点列表,因此您需要获取第一个getElementsByName(...)[0]

但是您已经在使用 jQuery,所以使用它。阅读一些关于jQuery 选择器的教程

于 2012-04-26T18:40:57.490 回答
3

一个简单、纯 JavaScript(因此更快)的解决方案:

var x = document.getElementsByName(document.getElementById('questions').value)[0].value = this.value;

我知道 jQuery 的标语是“少写,多做”,但在许多情况下确实如此…… many cases !== always;-)

于 2012-04-26T18:48:27.433 回答
1

试试这个

var q = $("#question").val();
var x = $("input[name='" + q + "']").val();

在第 2 行,变量 q,输入中提供的名称,ID 为“问题”,将用 ' 括起来,并且可以包含任何支持的字符,如空格、:、- 等

如果你需要一个组件的值而不管它的标签,你可以这样做:

var x = $("[name='" + q + "']").val();

考虑到这种方法$("[name='" + q + "']")可以返回多个元素,但.val()只会返回第一个元素的值。

于 2012-04-26T18:49:12.223 回答
0

如果我正确理解您的问题,您希望按名称获取元素,并且您选择的元素的名称将由某个下拉列表或文本区域指定。

这是我的看法:

html

<input type="text" id="enteredName">
<button id="doTheStuff">Do the work</button>

<input name="one" value="One">
<input name="two" value="Two">

jQuery

$('#doTheStuff').click(function(){
    var objectOfInterest = $('[name=\'' + $('#enteredName').val() + '\']');
    alert(objectOfInterest.val());
});

工作示例

这是另一个使用下拉菜单指定选择名称的工作示例。

于 2012-04-26T18:42:29.903 回答
0
$('#form-id input[name="name-input"]').val('your value');
于 2022-02-25T13:21:46.617 回答