使用 jquery 进行单选按钮表单验证

胡斯纳

我正在使用 jquery 进行表单验证,所有字段都工作正常,但只是checkbox并且radio button没有验证,并且将检查两个单选按钮我应该怎么做,任何人都可以根据我的代码向我建议问题出在哪里。如果表格中有任何错误,请随时告诉。

$(document).ready(function() {
	
	$('.success_msg').hide();

	/* name*/	
	$('#contact_name').on('input', function() {
		var input=$(this);
		var regex = /^([^0-9]*)$/;
		var is_name=regex.test(input.val());
		if(is_name){
			input.removeClass("invalid").addClass("valid");
		}
		else{
			input.removeClass("valid").addClass("invalid");
			
		}
	});
		
	/* E-mail */	
	$('#contact_email').on('input', function() {
		var input=$(this);
		var regex = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/;
		var is_email=regex.test(input.val());
		if(is_email){
			input.removeClass("invalid").addClass("valid");
		}
		else{
			input.removeClass("valid").addClass("invalid");
		}
	});

	/* Phone */	
	$('#contact_phone').on('input', function() {
		var input=$(this);
		var regex =  /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
		var is_phone=regex.test(input.val());
		if(is_phone){
			input.removeClass("invalid").addClass("valid");
		}
		else{
			input.removeClass("valid").addClass("invalid");
		}
	});

	/* message*/
	$('#contact_message, #contact_enquiry').keyup(function(event) {
		var input=$(this);
		var message=$(this).val();
		if(message){
			input.removeClass("invalid").addClass("valid");
		}
		else{
			input.removeClass("valid").addClass("invalid");
		} 
	});

	/* Radio button */


	$('#contact_male, #contact_female').click(function(){
	    if($(this).is(":checked")){
			$(this).removeClass("invalid").addClass("valid");
	    }
	    else if($(this).is(":not(:checked)")){
			$(this).removeClass("valid").addClass("invalid");
	    }
	});

	/* Checkbox */


	// $('#contact_check').click(function(){
	//     if($(this).is(":checked")){
	// 		$(this).removeClass("invalid").addClass("valid");
	//     }
	//     else if($(this).is(":not(:checked)")){
	// 		$(this).removeClass("valid").addClass("invalid");
	//     }
	// });

	
	 /* Submit */
	$("#submit_form").click(function(event){

		var form_data = $("#contact").serializeArray();

		var error_free = true;
		for (var input in form_data){
			var element = $("#contact_"+form_data[input]['name']);
			var valid = element.hasClass("valid");
			var error_element = $("span", element.parent());

			if (!valid){
				error_element.removeClass("error").addClass("error_show"); error_free=false;
			}
			else{
				error_element.removeClass("error_show").addClass("error");
			}
		}

		if (!error_free){
			event.preventDefault(); 
		}
		else{
			$('.success_msg').fadeIn().delay(3000).fadeOut();
			$('input , textarea , select').val('').removeClass('valid');
			event.preventDefault();
		}

	});
	  
});
.success_msg {
    width: 350px;
    line-height: 40px;
    border: 1px solid green;
    border-radius: 5px;
    background-color: rgba(213, 255, 187, 0.7);
    display: none;
    position: absolute;
    bottom: 5px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 999;
    text-align: center;
}
.iva-nav {
    width: 100px;
    text-align: center;
    
    color: #fff;
    font-size: 16px;
    font-weight: 600;
    transition: all 0.74s ease;
    margin: 10px;
    padding: 10px;
    cursor: pointer;
    position: relative;
    transition: all .7s ease-in-out;
}
.iva-nav span {
	transform: translateZ(8px);
	-webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none; 
  position: relative;
  z-index: 999;
}
.iva-nav:before {
    content: '';
    position: absolute;
    padding: 10px;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(254, 180, 29, 0.3);
    box-sizing: border-box;
    border: 1px solid rgba(255, 225, 225, 0.4);
    transition: all 0.5s ease-in-out;
    z-index: 50;
}
.iva-nav:after {
    content: '';
    position: absolute;
    padding: 10px;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(254, 180, 29, 0.3);
    box-sizing: border-box;
    border: 1px solid rgba(255, 225, 225, 0.4);
    transition: all 0.6s ease-in-out;
    z-index: 25;
}
.iva-nav:hover:before {
	transform: rotate(225deg);
	background-color: rgba(254, 180, 29, 0.6);
	border: 1px solid rgba(255, 225, 225, 0.1);

}
.iva-nav:hover:after {
	transform: rotate(133deg);
	background-color: rgba(254, 180, 29, 0.6);
	border: 1px solid rgba(255, 225, 225, 0.1);
}
.fancy-heading-s1 {
	max-width: 1400px;
	width: 100%;
	margin: 0 auto;
	font-size: 40px;
	padding: 25px 0;
	color: #ffffff;
}	
.fancy-heading-s2 {
	font-size: 30px;
	margin: 20px 0;
	color: #fff;
}
.fancy-title {
	display: block;
	font-size: 13px;
	margin: 20px 0;
	font-weight: 400;
	color: #ffffff;
}
.cfar-s1 .cfar-heading {
	text-align: center;
}

*:focus{ outline: none;}

.cfar {
	max-width: 1140px;
	width: 100%;
	margin: 0 auto;
	position: relative;
	box-sizing: border-box;
}
.cfar-s1 {
	padding: 40px 100px;
	background-color: #313439;
}
.cfar-s1 .fancy-title span {
	position: relative;
	text-transform: uppercase;
	cursor: pointer;
}
.cfar-s1 .fancy-title span:after {
	content: " . ";
	position: relative;
	top: 50%;
	display: inline-block;
	transform: translateY(-15%);
	margin: 0 10px;
}
.cfar-s1 .fancy-title span:last-child:after {
	content: "";
	margin-right: 0;
}
.cfar-s1 .fancy-heading-s2 h2 {
	font-size: 40px;
	font-weight: bold;
	text-transform: uppercase;
}
.cfar-s1 .fancy-heading-s2 h2 span {
	color: #da4e5b;
}
.cfar-s1 form {
	padding: 30px 0;
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
}

.cfar .detail {
	position: relative;
	margin: 20px 0;
	flex-basis: 48%;
}

.cfar .detail input,.detail textarea,.detail select {
	display: block;
	border: none;
	border-bottom: 1px solid #fff;
	padding: 5px 0;
	width: 100%;
	background: none;
	color: #ffffff;
}
.cfar option { background: rgba(0,0,0,0.8); }
.cfar .detail textarea {
	height: 100px;
	width: 100%;
	overflow: auto;
	resize: none;
}

.cfar .detail label {
	position: absolute;
	top: 0px;
	left: 5px;
	font-size: 16px;
	pointer-events: none;
	transition: all 0.43s ease-in-out;
}

.cfar .detail .inputBar {
	position: relative;
	display: block;
	transition: all 0.43s ease-in-out;
}
.cfar .detail input:focus:after,.detail textarea:foucs:after,.detail select:focus:after,
.cfar .detail .inputBar:focus:before, 
.cfar .detail .inputBar:focus:after {
	content: "";
	display: block;
	position: absolute;
	bottom: 0;
	width: 0;
	background: red;
	height: 2px;
}

.cfar .detail .inputBar:after { right: 50%;}

.cfar .detail .inputBar:before { left: 50%;}

.cfar .detail input:focus ~ label,
.cfar .detail input:valid ~ label,
.cfar .detail textarea:focus ~ label,
.cfar .detail textarea:valid ~ label {
	top: -20px;
	transition: all 0.3s ease-in-out;
	font-size: 13px;
}

.cfar .detail input:focus ~ .inputBar:before,
.cfar .detail input:focus ~ .inputBar:after,
.cfar .detail textarea:focus ~ .inputBar:before,
.cfar .detail textarea:focus ~ .inputBar:after 
.cfar .detail select:focus ~ .inputBar:before,
.cfar .detail select:focus ~ .inputBar:after {
	width: 50%;
}

.cfar .detail .answer { 
	display: inline-block;
	width: 114px;
	height: 20px;
	border: 1px solid #ffffff;
	left: 133px;
	position: inherit;
}
/* custom css*/
span.error{
	/*display: none;*/
	color: red;
	opacity: 0;
	position: absolute;
	top: 10px !important;
	right: 0;
	transition: all 0.4s ease-in-out;
}		
.error_show {
	position: absolute;
    top: 0;
    right: 0px;
	color: red;
}
input:focus {
    outline-width: 0;
}
input[type=number]::-webkit-inner-spin-button, 
input[type=number]::-webkit-outer-spin-button { 
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    margin: 0; 
    background-color: none;
}

/*-------------------------------------------------------------
		contact form style 1
-------------------------------------------------------------- */

.cfar-s1 .detail input,.cfar-s1 .detail textarea,.cfar-s1 .detail select {
	border-bottom: 1px solid rgba(255, 255, 255, 0.2);
	position: relative;
	font-size: 20px;
	font-family: 'Roboto Slab', serif;
	position: relative;
	z-index: 99;
}
.cfar-s1 .detail .inputBar {
	position: relative;
}
.cfar-s1 .detail .inputBar:before {
	content: "";
	height: 1px;
	position: absolute;
	left: 0;
	top: -1px;
	background-color: #ff0000;
	width: 0;
	transition: all 0.4s ease-in-out;
}
.cfar-s1 .detail input:focus ~ .inputBar:before,
.cfar-s1 .detail textarea:focus ~ .inputBar:before {
	width: 100%;
}

.cfar-s1 .detail label {
	top: 0;
	font-size: 14px;
	color: #777777;
}
.message {
	flex-basis: 100% !important;
}
.btn-container {
	margin: 40px auto;
}
.btn-container .btn {
	border: none;
	background-color: #da4e5b;
	padding: 20px 75px;
	color: #fff;
	width: 100%;
	font-size: 14px;
	font-weight: bold;
	cursor: pointer;
	text-transform: uppercase;
	letter-spacing: 2px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="contactform1">
    <div id="note"></div>
		    <form id="contact" method="post" action="">
						<div id="note"></div>
						<div class="detail">
							<input type="text" id="contact_name" name="name" autocomplete="off" required />
							<span class="inputBar"></span><!--inputBar-->
							<label for="contact_name">Name</label>
							<span class="error">This field is required</span>
						</div><!--detail-->
						<div class="detail">
							<input type="text" id="contact_email" name="email" autocomplete="off" required />
							<span class="inputBar"></span><!--inputBar-->

							<label for="contact_email">Email</label>
							<span class="error">A valid email address is required</span>
						</div><!--detail-->
						<div class="detail">
							<input type="number" id="contact_phone" autocomplete="off" name="phone" required />
							<span class="inputBar"></span><!--inputBar-->
							<label for="contact_phone">Phone Number</label>
							<span class="error">A valid Phone number is required</span>
						</div><!--detail-->
						<div class="detail">
							<input type="text" id="contact_enquiry" autocomplete="off" name="enquiry" required />
							<span class="inputBar"></span><!--inputBar-->
							<label for="contact_enquiry">I want to know about...</label>
							<span class="error">This field is required</span>
						</div><!--detail-->
						<div class="detail message">
							<textarea type="text" id="contact_message" autocomplete="off" name="message" required></textarea>
							<span class="inputBar"></span><!--inputBar-->
							<label for="contact_message">Type your Message here</label>
							<span class="error">This field is required</span>
						</div><!--detail-->

						<div class="detail">
							<span class="inputBar"></span><!--inputBar-->
							<input type="radio" id="contact_male" name="male" required />Male
							<input type="radio" id="contact_female" name="female" required />Female
							<span class="error">This field is required</span>
						</div><!--detail-->
						

						<div class="detail">
							<span class="inputBar"></span><!--inputBar-->
							<input type="checkbox" id="contact_html" name="html" required />HTMl
							<input type="checkbox" id="contact_css" name="css" required />CSS
							<span class="error">This field is required</span>
						</div><!--detail-->


						<div class="btn-container" id="submit_form">
							<a href="#">Submit</a>
						</div>		
					</form>
				</div>

问题是您单独验证所有复选框和单选按钮,而很明显您将它们放在一起考虑:1 个单选按钮的有效性取决于另一个单选按钮的检查属性。

为了解决这个问题,您需要创建一个验证函数来计算属于一起的所有单选按钮,并将检查的属性计数为 1。

更改单选按钮和复选按钮的 HTML,使其具有一个包装类:

<div class="detail gender">
    span class="inputBar"></span><!--inputBar-->
    <input type="radio" value="male" name="gender" />Male
    <input type="radio" value="female" name="gender" />Female
    <span class="error">This field is required</span>
</div><!--detail-->

请注意包装单选按钮的“性别”类。还要注意两个单选按钮如何具有相同的名称(这将在浏览器中将单选按钮组合在一起,即如果您选择一个,它将取消选择另一个)。当为“性别”字段提交时,value 属性将与表单一起发送。

现在,您可以通过在给定时间执行此操作来验证这些按钮中的至少一个是否已验证(例如在单击事件中或可能在提交表单时)

var radiobuttons = $(".gender").find("input[type=radio]");
if(radiobuttons.prop("checked").length === 1) {
    // do valid stuff here
} else {
    // do invalid stuff here
}

这也适用于复选框。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用jQuery进行表单验证

来自分类Dev

无法根据值检查单选按钮,需要使用Javascript / Jquery进行验证

来自分类Dev

使用jQuery进行引导的表单验证

来自分类Dev

使用PHP进行JQuery表单验证

来自分类Dev

斯卡拉玩!使用 2 个单选按钮进行表单验证

来自分类Dev

使用PL / SQL进行单选按钮验证

来自分类Dev

使用JavaScript进行单选按钮验证

来自分类Dev

使用jQuery获取样式化表单的单选按钮值

来自分类Dev

如何使用formvalidation.io和jQuery验证单选按钮?

来自分类Dev

使用jquery选中单选按钮时验证文本框是

来自分类Dev

使用jquery选中单选按钮时验证文本框是

来自分类Dev

使用PHP和jQuery进行单选按钮测验

来自分类Dev

在 FullCalendar 中使用单选按钮进行 JQuery 过滤

来自分类Dev

使用PHP自引用表单的jQuery进行表单验证

来自分类Dev

使用PHP自引用表单的jQuery进行表单验证

来自分类Dev

如何使用HTML表单中的javascript检查单选按钮验证

来自分类Dev

使用JQuery检查单选按钮

来自分类Dev

在Codeigniter中使用jQuery Ajax进行表单验证

来自分类Dev

使用JQuery,Ajax,PHP,Json进行表单验证

来自分类Dev

使用Jquery进行表单验证不适用于Chrome

来自分类Dev

使用jquery.validate.js插件进行条件表单验证

来自分类Dev

使用JavaScript / jQuery对数组进行表单验证

来自分类Dev

使用Jquery进行表单验证不适用于Chrome

来自分类Dev

IBM Worklight-使用jQuery进行表单验证

来自分类Dev

在PHP中使用jQuery和Ajax进行表单验证

来自分类Dev

在Codeigniter中使用jQuery Ajax进行表单验证

来自分类Dev

如何使用 jQuery 对注入的 ajax 表单进行多次验证?

来自分类Dev

使用JS confrim对话框对单选按钮进行验证

来自分类Dev

验证jQuery中的单选按钮

Related 相关文章

  1. 1

    使用jQuery进行表单验证

  2. 2

    无法根据值检查单选按钮,需要使用Javascript / Jquery进行验证

  3. 3

    使用jQuery进行引导的表单验证

  4. 4

    使用PHP进行JQuery表单验证

  5. 5

    斯卡拉玩!使用 2 个单选按钮进行表单验证

  6. 6

    使用PL / SQL进行单选按钮验证

  7. 7

    使用JavaScript进行单选按钮验证

  8. 8

    使用jQuery获取样式化表单的单选按钮值

  9. 9

    如何使用formvalidation.io和jQuery验证单选按钮?

  10. 10

    使用jquery选中单选按钮时验证文本框是

  11. 11

    使用jquery选中单选按钮时验证文本框是

  12. 12

    使用PHP和jQuery进行单选按钮测验

  13. 13

    在 FullCalendar 中使用单选按钮进行 JQuery 过滤

  14. 14

    使用PHP自引用表单的jQuery进行表单验证

  15. 15

    使用PHP自引用表单的jQuery进行表单验证

  16. 16

    如何使用HTML表单中的javascript检查单选按钮验证

  17. 17

    使用JQuery检查单选按钮

  18. 18

    在Codeigniter中使用jQuery Ajax进行表单验证

  19. 19

    使用JQuery,Ajax,PHP,Json进行表单验证

  20. 20

    使用Jquery进行表单验证不适用于Chrome

  21. 21

    使用jquery.validate.js插件进行条件表单验证

  22. 22

    使用JavaScript / jQuery对数组进行表单验证

  23. 23

    使用Jquery进行表单验证不适用于Chrome

  24. 24

    IBM Worklight-使用jQuery进行表单验证

  25. 25

    在PHP中使用jQuery和Ajax进行表单验证

  26. 26

    在Codeigniter中使用jQuery Ajax进行表单验证

  27. 27

    如何使用 jQuery 对注入的 ajax 表单进行多次验证?

  28. 28

    使用JS confrim对话框对单选按钮进行验证

  29. 29

    验证jQuery中的单选按钮

热门标签

归档