如何使用querySelector on通过名称选择输入元素?


74

我最近在该站点上获得了帮助,希望使用querySelector诸如上的表格输入,select但是一旦我拿出<select>它,就完全改变了功能中必须执行的操作。

HTML:

<form onsubmit="return checkForm()">
    Password: <input type="text" name="pwd">
    <input type="submit" value="Submit">
</form>

Javascript:

<script language="Javascript" type="text/javascript">
    debugger;
    function checkForm() {
        var form = document.forms[0];
        var selectElement = form.querySelector('');
        var selectedValue = selectElement.value;

        alert(selectedValue);
</script>

以前,我曾('select')购买过querySelector,但现在我不确定该放什么。
我也尝试过多种方法,querySelectorAll但似乎无法弄清楚。

为了明确我正在拉name="pwd"

我该怎么办?


querySelector方法带有一个selector参数。所述selector参数是一个包含由逗号分隔的一个或多个CSS选择的字符串。如果你被困在有效选择的MDN有很大的页面选择器。当然,您总是可以在SO方面获得帮助。我只是认为您可能会发现该页面通常是一个方便的参考书:)
Nope

Answers:


123

您可以尝试'input [name =“ pwd”]':

function checkForm(){
     var form = document.forms[0];
     var selectElement = form.querySelector('input[name="pwd"]');
     var selectedValue = selectElement.value;
}

看看这个http://jsfiddle.net/2ZL4G/1/


1
我已经尝试过,但是似乎什么也没有回到我的身边,而且我也没有收到任何警报
Anthony Tobuscus 2013年

嗯,我..我已经尝试了很多次了,但仍然不能用这种方法,但是它可以在jsfiddle中使用?我错过了什么吗?它还显示在地址栏中,所以我知道它正在接收输入,只是我没有收到任何警报
Anthony Tobuscus 2013年

@AnthonyTobuscus:如果您的代码中仍然包含该debugger;语句,则这可能导致其余代码无法执行,因为这将停止该行的执行。
Nope 2013年

我尝试了一下,但是没有其他版本的代码,我将继续找到答案,当我将其发布在这里,谢谢您的
宝贵

2
引号周围 pwd似乎不需要
benjaminz

25

我知道这很旧,但是最近我遇到了同样的问题,我设法通过仅访问如下属性来选择元素: document.querySelector('[name="your-selector-name-here"]');

以防万一有人会需要这个:)


1
在Chrome版本78.0.3904.70(正式版本)(64位)中,仅使用name属性的querySelector仅返回第一个元素,因此您不能使用数组访问来访问集合中的任何其他单选按钮。相反,您需要为每个单选按钮分配唯一的ID或值(这是区分单选按钮的常规方法)。因此,在HTML5中对document.getElementsByName()进行了折旧处理后,document.querySelector('[name =“ radio-button-name”] [value =“ unique-value”]')是最好的替代方法。
霍华德·布朗

1
@HowardBrown,但是如果您想拥有元素数组,querySelectorAll是否会更好地工作?
西普里安·特佩斯

1
只需共享即可获得价值,只需.value在此代码的末尾添加即可,例如:document.querySelector('[name="your-selector-name-here"]').value
Marwan Salim

10

1-您需要使用'}'关闭该函数的块,该块已丢失。

2-querySelector的参数不能为空字符串''或''...全部使用'*'。

3-这些参数将返回所需的值:

querySelector('*')

querySelector('input')

querySelector('input[name="pwd"]')

querySelector('[name="pwd"]')

0

这些示例似乎效率不高。如果要对值采取行动,请尝试以下操作:

<input id="cta" type="email" placeholder="Enter Email...">
<button onclick="return joinMailingList()">Join</button>

<script>
    const joinMailingList = () => {
        const email = document.querySelector('#cta').value
        console.log(email)
    }
</script>

如果您使用this带有粗箭头(=>)的关键字,则会遇到问题。如果需要这样做,请上旧学校:

<script>
    function joinMailingList() {
        const email = document.querySelector('#cta').value
        console.log(email)
    }
</script>

如果您正在使用密码输入,则应使用,type="password"以便在用户键入时它将显示******,这也更具语义。


0

所以...您需要更改代码中的某些内容

<form method="POST" id="form-pass">
Password: <input type="text" name="pwd" id="input-pwd">
<input type="submit" value="Submit">
</form>

<script>
var form = document.querySelector('#form-pass');
var pwd = document.querySelector('#input-pwd');
pwd.focus();
form.onsubmit = checkForm;

function checkForm() {
  alert(pwd.value);
}
</script>

尝试这种方式。


0

querySelector()与文件中的编号相符。您必须在中输入密码ID.html

然后把它传递给querySelector()#symbol & .value property

例:

let myVal = document.querySelector('#pwd').value

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.