应该有一个简单的解决方案。我需要按名称获取输入元素并设置其值。
以下Javascript不起作用:
x = document.getElementsByName($('#questions').val());
x.value=this.value;
是否有使用JQuery的简单解决方案?
答案 0 :(得分:9)
您正在混合普通的javascript和jQuery。 使用属性选择器。
查看我的示例和此jsFiddle Demonstration
<强> HTML 强>
<input type="text" name="nameOfTheInputElement"/>
<强>的jQuery 强>
$(function() {
$("input[name='nameOfTheInputElement']").val("your value");
});
如果您因某种原因需要更改名称是另一个元素中的值的元素 然后这样做。 jsFiddle Demonstration
<强> HTML 强>
<input type="text" id="questions" value="nameOfTheInputElement"/>
<input type="text" name="nameOfTheInputElement"/>
<强>的jQuery 强>
$(function() {
var name = $("#questions").val();
$("input[name='"+name +"']").val("your value");
});
答案 1 :(得分:2)
getElementsByName()会返回一个节点列表,因此您需要获取第一个getElementsByName(...)[0]
但是你已经在使用jQuery了,所以使用它。阅读有关jQuery selectors
的一些教程答案 2 :(得分:1)
简单,纯粹的JavaScript(因此更快)解决方案:
var x = document.getElementsByName(document.getElementById('questions').value)[0].value = this.value;
我知道jQuery的标语是“少写,做多”,在很多情况下它确实是真的... many cases !== always
,但是; - )
答案 3 :(得分:1)
试试这个
var q = $("#question").val();
var x = $("input[name='" + q + "']").val();
在第二行,变量q,输入中提供的带有'问题'的名称,将用'括起来',并且可以包含任何支持的字符,如空格,:, - 等
如果您需要组件的值而不管其标记,您可以这样做:
var x = $("[name='" + q + "']").val();
请注意,此方法$("[name='" + q + "']")
可以返回多个元素,但.val()
只会返回第一个元素的值。
答案 4 :(得分: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());
});
这是another working example使用下拉列表指定选择名称。