【发布时间】:2018-07-30 11:00:35
【问题描述】:
我有一个名为“标签”的文本框和另一个名为“验证”的选择框。当我单击添加按钮时,文本框“标签”的值将附加到左侧的表单中,并带有一个新创建的文本框 like this。
现在我要做的是,我正在尝试从右侧表单(字母或数字)的选择框中的可用验证选项列表中向动态创建的文本框添加验证。
即,当我输入“New Age”并选择“Numeric”作为验证时,左侧表单上创建的“New Age:”文本框只有在输入数字时才应提交。否则显示错误。
提前致谢。
<!DOCTYPE html>
<html>
<head>
<!--<link rel="stylesheet" href="styless.css">-->
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script>
var Errors = [];
</script>
<script src="newfunc.js"></script>
<script>
$(document).ready(function () {
$("#name").on("input", function () {
nameCheck();
});
$("#age").on("input", function () {
ageCheck();
});
$("#gender").on("input", function () {
genderCheck();
});
$("#vehicle").on("input ", function () {
vehicleCheck();
});
$("#cars").on("input", function () {
carsCheck();
});
var x = 1;
function appendRow() {
var d = document.getElementById('divis');
d.innerHTML += "<input type='text' id='tst" + x++ + "'><br >";
}
$("form[name='form1']").on("submit", function (event) {
if (!nameCheck()) {
Errors.push("Please enter a valid name");
event.preventDefault();
}
if (!ageCheck()) {
Errors.push("Please enter a valid age");
event.preventDefault();
}
if (!genderCheck()) {
Errors.push("Please select gender");
event.preventDefault();
}
if (!carsCheck()) {
Errors.push("Please select a valid make");
event.preventDefault();
console.log(Errors);
}
if (!vehicleCheck()) {
Errors.push("Please check a mode");
event.preventDefault();
} else {
$(this).trigger("submit");
}
});
$("form[name='form2']").on("submit", function (event) {
var lab = $("#label").val();
$('#divis').append(lab);
appendRow();
$('#ol_div').append($('#todd'));
// $('#dono').remove();
event.preventDefault();
});
});
</script>
<style>
.error p {
display: inline-block;
color: red;
}
form p {
display: none;
}
.inlineinput div {
display: inline;
}
.one {
display: inline;
}
.two {
display: inline;
}
</style>
</head>
<body>
<div class="main" style="width:100%;">
<div id="old_div" style="float:left; width:50%;">
<form name="form1" action="fun.php" method="post" onsubmit="validateAllInputBoxes(event);">
<div class="name">
<label>Name : </label>
<input id='name' name='dedede' type='text'><br>
<p id="p1"></p>
</div>
<br>
<div class="age">
<label>Age : </label>
<input id='age' name='subject' type='text'><br>
<p id="p2"></p>
</div>
<br>
<div class="gender">
<label>Gender : </label>
<input id='gender' type='radio' name='sel' value='male'>Male
<input id='gender' type='radio' name='sel' value='female'>Female<br>
<p id="p3"></p>
</div>
<br>
<div class="vehicle">
<label>Vehicle : </label>
<input type="checkbox" id="vehicle" name='vehicle' value="Car">Car
<input type="checkbox" id="vehicle" name='vehicle' value="Bike">Bike
<input type="checkbox" id="vehicle" name='vehicle' value="Other">Other<br>
<p id="p4"></p>
</div>
<br>
<div class="cars">
<label>Car Make:</label>
<select name="cars" id="cars" ">
<option value="-1" selected disabled="disabled">Choose an option</option>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
</select>
<br>
<p id="p5"></p>
</div>
<br>
<div id="ol_div">
</div>
<div>
<button id="submit" class="sendButton">Submit</button>
</div>
</form>
<br/>
</div>
<div style="float:right; width:50%; ">
<div id="new_div">
<form name="form2" method="post">
<span class="inlineinput">
<div class="name">
<label>Label : </label>
<input id='label' name='dedede' type='text'>
</div>
</span>
<span class="inlineinput">
<div class="name">
<label>Validation:</label>
<select name="vali" id="vali" ">
<option value="-1" selected disabled="disabled">Choose an option</option>
<option value="1">Numerics</option>
</select>
</div>
</span>
<span class="inlineinput">
<div>
<button id="dono" class="newButton">Add</button>
</div>
</span>
<br>
<br>
<div id="todd">
<div class="one" id="labe"></div>
<div class="two" id="divis"></div>
<br><br>
</div>
<br>
</form>
</div>
</div>
</body>
</html>
newfunc.js
function nameCheck() {
var name = $('#name').val();
var name_regex = /^[A-z]+$/;
if (!name_regex.test(name)) {
$('#p1').text("* Please enter a valid name *");
$("#name").parents(".name").addClass("error");
return false;
} else {
$("#name").parents(".name").removeClass("error");
return true;
}
}
function ageCheck() {
var age = $('#age').val();
var age_regex = /^[0-9]+$/;
if (!age_regex.test(age)) {
//Errors.push("Please enter a valid age");
$('#p2').text("* Please enter a valid age *");
$("#age").parents(".age").addClass("error");
return false;
} else {
$("#age").parents(".age").removeClass("error");
return true;
}
}
function labelCheck() {
var label = $('#label');
if (label.val().length > 0) {
//Errors.push("Please enter a valid age");
$('#p2').text("* Please enter a valid label *");
$("#label").parents(".label").addClass("error");
return false;
} else {
$("#label").parents(".label").removeClass("error");
return true;
}
}
function genderCheck() {
var gender = $('#gender').val();
if ($('input[type=radio]:checked').length <= 0) {
//Errors.push("Please select Gender");
$('#p3').text("* Please select the Gender *");
$("#gender").parents(".gender").addClass("error");
return false;
} else {
$("#gender").parents(".gender").removeClass("error");
return true;
}
}
function vehicleCheck() {
var vehicle = $('#vehicle').val();
if ($('input[id=vehicle]:checked').length == 0)
{
//Errors.push("Please select a vehicle");
$('#p4').text("* Please select a vehicle *");
$("#vehicle").parents(".vehicle").addClass("error");
return false;
} else {
$("#vehicle").parents(".vehicle").removeClass("error");
return true;
}
}
function carsCheck() {
var cars = $('#cars').val();
if (document.form1.cars.value == "-1")
{
//Errors.push("Please select one car make");
$('#p5').text("* Please select one car make *");
$("#cars").parents(".cars").addClass("error");
return false;
} else {
$("#cars").parents(".cars").removeClass("error");
return true;
}
}
(function ($) {
$.fn.selected = function (fn) {
return this.each(function () {
$(this).focus(function () {
this.dataChanged = false;
}).change(function () {
this.dataChanged = true;
fn(this);
}).blur(function (e) {
if (!this.dataChanged) {
fn(this);
}
});
});
};
})(jQuery);
【问题讨论】:
-
我无法运行此代码,因为
nameCheck();没有在任何地方定义,而且代码中的 html 问题也很少 -
@brk 抱歉,我现在已经编辑并添加了函数。
标签: javascript jquery validation