Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:选中单选按钮_Javascript_Jquery - Fatal编程技术网

Javascript:选中单选按钮

Javascript:选中单选按钮,javascript,jquery,Javascript,Jquery,在一个页面中,我有两个搜索表单: <form class="search-panel" method="post" action="" onsubmit="return searchRedirect(this)"> <input type="test" name="searchFor" /> <div class="additional-search-button"></div> <div id

在一个页面中,我有两个搜索表单:

<form class="search-panel" method="post" action="" onsubmit="return searchRedirect(this)">
        <input type="test" name="searchFor" />
        <div class="additional-search-button"></div>
        <div id="additional-search-box">
            <div class="as-cont">
                Books<input type="radio" name="category" value="Books" checked="1" /><br/>
                School<input type="radio" name="category" value="School" /><br/>
                Music<input type="radio" name="category" value="Music" />
            </div>
        </div>
       <input type="submit" name="search" />
    </form>

<form class="search-panel" method="post" action="" onsubmit="return searchRedirect(this)">
            <input type="test" name="searchFor" />
            Games<input type="radio" name="category" value="Games" checked="1" />
            <input type="submit" name="search" />
        </form>
我需要如果我点击搜索游戏-只搜索游戏,如果点击搜索书籍,学校或音乐-只搜索它们。但是现在搜索游戏的表单总是使用第一个表单选中按钮。

表单['category']将为您提供一个名为category的所有表单元素的节点列表,因此您不能通过将其与:checked连接来将其用作选择器。它相当于$[object NodeList]:选中

由于您已经在使用jQuery,因此可以改为使用以下内容:

alert($(form).find("input[name='category']:checked").val());
也就是说,在表单的上下文中,找到每个名为category的输入元素,并获取其值。

form['category']将为您提供一个名为category的所有表单元素的节点列表,因此您不能通过将其与:checked串联来将其用作选择器。它相当于$[object NodeList]:选中

由于您已经在使用jQuery,因此可以改为使用以下内容:

alert($(form).find("input[name='category']:checked").val());
也就是说,在表单的上下文中,找到每个被选中的名为category的输入元素,并获取其值。

您不能真正执行表单[category]+:选中,而是使用jQuery的筛选方法,然后使用“this”引用表单。此外,您可以/应该使用jQuery.submit来捕获事件,而不是内联处理程序,并且为了更清晰的代码和更好的性能,将$form['category']+':checked'放入变量中,这样jQuery就不需要一次又一次地搜索元素。 这是一个示例:

$('form').submit(function(e){
var checked = $(this['category']).filter(':checked');
var value = checked.val();
alert(value);
})​
这是一个fiddle,因此您可以将传递给submit回调的e作为事件对象,而e.preventDefault类似于返回false,因此表单不会提交:

您不能真正执行表单[类别]+:选中,而是使用jQuery的筛选方法,然后使用“this”引用表单。此外,您可以/应该使用jQuery.submit来捕获事件,而不是内联处理程序,并且为了更清晰的代码和更好的性能,将$form['category']+':checked'放入变量中,这样jQuery就不需要一次又一次地搜索元素。 这是一个示例:

$('form').submit(function(e){
var checked = $(this['category']).filter(':checked');
var value = checked.val();
alert(value);
})​
这是一个fiddle,因此您可以将传递给submit回调的e作为事件对象,而e.preventDefault类似于返回false,因此表单不会提交:

仅供参考,表单中可以使用更多的语义元素,而不是div。用于标记表单控件,以及+对相关表单控件进行分组。仅供参考,表单中可以使用更多的语义元素,而不是div。用于标记表单控件,和+到与组相关的表单控件。@Defense,如果它解决了您的问题,为什么不向上投票呢?@Defense,是的,但对我来说,单击数字正上方的向上箭头是诚实的。答案真的很好。@Defense,如果它解决了你的问题,为什么不投票表决呢?@Defense,是的,但对我来说,点击数字正上方的向上箭头是诚实的。答案真的很好。F@K,我打开了一段时间的窗口,回来后在写答案之前没有刷新…我确信他们已经修改了这个,以便在没有刷新的情况下获得新帖子…嗯,还有另一个答案…无论如何,我建议使用.submit和variables。。。F@K,我把窗户开了一会儿,回来后,在写答案之前没有刷新…我确信他们已经修改了这个,以便在没有刷新的情况下获得新帖子…嗯,还有另一个答案…无论如何,我建议使用.submit和variables。。。