我创建了以下表单: http://jsfiddle.net/baumdexterous/GYNSu/1/
我实现了一个适用于许多表单元素的验证脚本,但由于某种原因它不适用于单选按钮,所以目前用户可以提交表单而不选择其中一个必需的单选按钮。
如何使用此现有脚本启用单选按钮的验证?非常感谢。
<ul>
<li class="required">
<label>What is the U.S. Capital? Please select your answer below:</label>
<div class="questionsone">
<input name="questionone" type="radio" value="a">a) New York<br>
<input name="questionone" type="radio" value="b">b) Washington DC<br>
<input name="questionone" type="radio" value="c">c) Seattle<br>
<input name="questionone" type="radio" value="d">d) Portland<br>
</div>
</li>
</ul>
更新:我有一个适用于现有验证的JavaScript部分。试图弄清楚如何添加一种检测单选按钮的方法:
<script>
$(function() {
var root = $("#wizard").scrollable();
// some variables that we need
var api = root.scrollable(),
drawer = $("#drawer");
// validation logic is done inside the onBeforeSeek callback
api.onBeforeSeek(function(event, i) {
// we are going 1 step backwards so no need for validation
if (api.getIndex() < i) {
// 1. get current page
var page = root.find(".page").eq(api.getIndex()),
// 2. .. and all required fields inside the page
inputs = page.find(".required :input").removeClass("error"),
// 3. .. which are empty
empty = inputs.filter(function() {
return $(this).val().replace(/\s*/g, '') == '';
});
// if there are empty fields, then
if (empty.length) {
// slide down the drawer
drawer.slideDown(function() {
// colored flash effect
drawer.css("backgroundColor", "#229");
setTimeout(function() {
drawer.css("backgroundColor", "#fff");
}, 1000);
});
// add a CSS class name "error" for empty & required fields
empty.addClass("error");
// cancel seeking of the scrollable by returning false
return false;
// everything is good
} else {
// hide the drawer
drawer.slideUp();
}
}
// update status bar
$("#status li").removeClass("active").eq(i).addClass("active");
});
// if tab is pressed on the next button seek to next page
root.find("button.next").keydown(function(e) {
if (e.keyCode == 9) {
// seeks to next tab by executing our validation routine
api.next();
e.preventDefault();
}
});
});
</script>
答案 0 :(得分:1)
单选按钮名称是否相同。将他们组合在一起。然后你所要做的就是让第一个人有checked="true"
<input name="question" type="radio" value="a" checked="true">a) New York<br>
<input name="question" type="radio" value="b">b) Washington DC<br>
<input name="question" type="radio" value="c">c) Seattle<br>
<input name="question" type="radio" value="d">d) Portland<br>
这使他们发送至少一件事。否则,您必须检查输入的选定值。
此外,所有文本输入都可以具有required
属性,这样可以确保存在某些内容。 HTML5将其作为验证。
http://www.w3schools.com/tags/att_input_required.asp
修改强> 这是我刚刚使用jQuery制作的小提琴。这是您想要的真正验证。 http://jsfiddle.net/slyfox13/H9Dw2/
答案 1 :(得分:0)
您的收音机应该都具有相同的名称。在代码中,你实际上有4个不同的输入,每个输入作为自己的表格数据参数,而不是影响一个表格数据参数的4个无线电输入。
答案 2 :(得分:0)
输入名称不一定都必须相同,即然后检查questionone的值是否为null以进行验证
答案 3 :(得分:0)
为所有单选按钮设置相同的名称,因为可以选择单选按钮。
<input name="questionone" type="radio" value="a">a) New York<br>
<input name="questionone" type="radio" value="b">b) Washington DC<br>
<input name="questionone" type="radio" value="c">c) Seattle<br>
<input name="questionone" type="radio" value="d">d) Portland<br>
使用jQuery进行验证:
if($("input[type=radio,name=questionone]:checked").length >0)
{
/* do something */
}
答案 4 :(得分:0)
首先,您需要将单选按钮名称更改为同一个名称。前
<ul>
<li class="required">
<label>What is the U.S. Capital? Please select your answer below:</label>
<div class="questionsone">
<input name="question" type="radio" value="a">a) New York<br>
<input name="question" type="radio" value="b">b) Washington DC<br>
<input name="question" type="radio" value="c">c) Seattle<br>
<input name="question" type="radio" value="d">d) Portland<br>
</div>
</li>
</ul>
这样你才能选择一个。接下来,您需要创建document.ready()函数。将此代码添加到document.ready()
$( document ).ready(function() {
function RadioTest(){
inputs = document.getElementsByName('question');
for (index = 0; index < inputs.length; ++index) {
if(inputs[index].checked!=true){
alert("radio not selected");
return false;
}
}
}
});
答案 5 :(得分:0)
您必须为所有无线电输入标签指定相同的名称。
像这样
<div class="questionsone">
<input name="qstn1" type="radio" value="a">a) New York<br>
<input name="qstn1" type="radio" value="b">b) Washington DC<br>
<input name="qstn1" type="radio" value="c">c) Seattle<br>
<input name="qstn1" type="radio" value="d">d) Portland<br>
</div>