应该有一个简单的解决方案。我需要按名称获取输入元素并设置其值。
以下 Javascript 不起作用:
x = document.getElementsByName($('#questions').val());
x.value=this.value;
有没有使用 JQuery 的简单解决方案?
应该有一个简单的解决方案。我需要按名称获取输入元素并设置其值。
以下 Javascript 不起作用:
x = document.getElementsByName($('#questions').val());
x.value=this.value;
有没有使用 JQuery 的简单解决方案?
您正在混合普通的 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");
});
getElementsByName()返回一个节点列表,因此您需要获取第一个getElementsByName(...)[0]
但是您已经在使用 jQuery,所以使用它。阅读一些关于jQuery 选择器的教程
一个简单、纯 JavaScript(因此更快)的解决方案:
var x = document.getElementsByName(document.getElementById('questions').value)[0].value = this.value;
我知道 jQuery 的标语是“少写,多做”,但在许多情况下确实如此…… many cases !== always
;-)
试试这个
var q = $("#question").val();
var x = $("input[name='" + q + "']").val();
在第 2 行,变量 q,输入中提供的名称,ID 为“问题”,将用 ' 括起来,并且可以包含任何支持的字符,如空格、:、- 等
如果你需要一个组件的值而不管它的标签,你可以这样做:
var x = $("[name='" + q + "']").val();
考虑到这种方法$("[name='" + q + "']")
可以返回多个元素,但.val()
只会返回第一个元素的值。
如果我正确理解您的问题,您希望按名称获取元素,并且您选择的元素的名称将由某个下拉列表或文本区域指定。
这是我的看法:
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());
});
这是另一个使用下拉菜单指定选择名称的工作示例。
$('#form-id input[name="name-input"]').val('your value');