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。。。