如何使单选按钮验证文本框?
how to make a radio button validate a text box?
我有一个按钮 "ADD",单击该按钮会添加一个 div,其中包含两个带有弹出日历的文本框和一个单选按钮。
1.The 问题是我想检查文本框是否为空,如果为空它应该警告 "it cannot be blank" 并且警告 "enddate should be greater than start date" 如果开始日期 > 结束日期
2.Another 问题是我只想选择相应的单选按钮,而其他必须取消选择。
谁能给我一个例子
这是我用来添加 div 和弹出式日历的代码
$(document).ready(function () {
$(".datepicker").each(function () {
$(this).datepicker();
});
$("#btnAddAddress").click(function () {
$(".container").show();
$(".container").append('<table> <tr> <td> <label ID="lblStartDate">Start Date </label> </td> <td> <input type="text" class="datepicker"/><label id="lblEndDate" >End Date</label></td><td><input type="text" class="datepicker"/> </td> <td><input type="radio" /></td></tr></table>');
$(".datepicker").datepicker();
})});
按钮
<div class="AAA">
<input type="button" id="btnAddAddress" name="btnAddAddress" value="Add" />
<div class="container">
</div>
</div>
在这里试试这个代码:
$("#btnAddAddress").click(function () {
$(".container").show();
var table = $('.container').find('table').last();
var inc = validate($(this));
if (inc) return;
$(".container").append('<table> <tr> <td> <label ID="lblStartDate">Start Date </label> </td> <td> <input type="text" class="datepicker"/><label id="lblEndDate" >End Date</label></td><td><input type="text" class="datepicker"/> </td> <td><input type="radio" /></td></tr></table>');
$(".datepicker").datepicker();
})
$('.container').on('click', '[type=radio]', function () {
var inc = validate($(this));
if (inc) {
$(this).prop('checked', false);
} else {
$(this).closest('.container').find('[type=radio]').prop('checked', false);
$(this).prop('checked', true);
}
});
function validate(el) {
var inc = 0,
arr = [],
flag = false,
tableClosest = (el[0].type == "radio") ? $(el).closest('table').find('input') : $('.container').find('table').last().find('input');
tableClosest.each(function () {
arr.push($(this).val());
if ($(this).val() == "") {
inc++;
}
});
if (inc > 0) {
alert('Field cant be empty');
flag = true;
} else {
if ((new Date(arr[0]).getTime() > new Date(arr[1]).getTime())) {
alert('End date must be greater than start date');
flag = true;
} else {
flag = false;
}
}
return flag;
}
我留下了一些地方,您可以在其中注入验证,在哪里添加或不添加,如果失败该怎么办等等。
**编辑:好的,如果任何字段为空并且复选框被选中,我现在已经添加了代码来阻止提交。
$(function(){
$("#btnAddAddress").click(function () {
//callAllValid();
$(".container").show();
$(".container").append('<table> <tr> <td> <label ID="lblStartDate">Start Date </label> </td> <td> <input type="text" class="datepicker"/><label id="lblEndDate" >End Date</label></td><td><input type="text" class="datepicker"/> </td> <td><input type="radio" onclick="callValid(this)"/></td></tr></table>');
$(".datepicker").datepicker();
});
});
function callValid(m){
var inputs = $(m).closest('tr').find('input[type=text]');
if(!$(m).is(':checked')){
return true;
}
var valid = true;
inputs.each(function(){
if($(this).val()===''){
alert('Empty');
valid = false;
return false;//breaks the each loop
}
});
//do anything with the var valid here
return valid;
}
function callAllValid(){
var t = $('table :checked');
var v = true;
t.each(function(){
v = callValid(this);
if(!v){
return false;
}
});
return v;
}
<link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form onsubmit="return callAllValid();" action="" method="POST">
<div class="AAA">
<input type="button" id="btnAddAddress" name="btnAddAddress" value="Add" /> <input type=submit />
<div class="container"> </div>
</div>
</form>
干杯
欢乐
关于验证我没有做太多..但我想我已经做了你想做的...
html
<div class="AAA">
<input type="button" id="btnAddAddress" name="btnAddAddress" value="Add" />
<div class="container">
</div>
</div>
Javascript
$(document).ready(function () {
$(".datepicker").each(function () {
$(this).datepicker();
});
});
$("#btnAddAddress").click(function () {
debugger
$(".container").show();
$(".container").append('<table> <tr> <td> <label ID="lblStartDate">Start Date </label> </td> <td> <input type="text" class="datepicker"/><label id="lblEndDate" >End Date</label></td><td><input type="text" class="datepicker"/> </td> <td><input name="radioGroup" type="radio" /></td></tr></table>');
$(".datepicker").each(function () {
$(this).datepicker();
});
})
$('.container').on('click', '[type=radio]', function (e) {
if ($(e.target).prop("checked")) {
var table = $(e.target).closest("table")
var textboxes = $(table).find(".datepicker")
if ($($(textboxes)[0]).val() == "") {
alert("StartDate Cannot be empty");
}
if ($($(textboxes)[1]).val() == "") {
alert("EndDate Cannot be empty");
}
if (new Date($($(textboxes)[0]).val()) > new Date($($(textboxes)[1]).val())) {
alert("StartDatemust not be greater than end date");
}
}
})
能否请您查看更新后的内容 fiddle http://jsfiddle.net/ksjn7ko7/5/
好的,如果对您有帮助,请标记为答案
我有一个按钮 "ADD",单击该按钮会添加一个 div,其中包含两个带有弹出日历的文本框和一个单选按钮。
1.The 问题是我想检查文本框是否为空,如果为空它应该警告 "it cannot be blank" 并且警告 "enddate should be greater than start date" 如果开始日期 > 结束日期
2.Another 问题是我只想选择相应的单选按钮,而其他必须取消选择。
谁能给我一个例子
这是我用来添加 div 和弹出式日历的代码
$(document).ready(function () {
$(".datepicker").each(function () {
$(this).datepicker();
});
$("#btnAddAddress").click(function () {
$(".container").show();
$(".container").append('<table> <tr> <td> <label ID="lblStartDate">Start Date </label> </td> <td> <input type="text" class="datepicker"/><label id="lblEndDate" >End Date</label></td><td><input type="text" class="datepicker"/> </td> <td><input type="radio" /></td></tr></table>');
$(".datepicker").datepicker();
})});
按钮
<div class="AAA">
<input type="button" id="btnAddAddress" name="btnAddAddress" value="Add" />
<div class="container">
</div>
</div>
在这里试试这个代码:
$("#btnAddAddress").click(function () {
$(".container").show();
var table = $('.container').find('table').last();
var inc = validate($(this));
if (inc) return;
$(".container").append('<table> <tr> <td> <label ID="lblStartDate">Start Date </label> </td> <td> <input type="text" class="datepicker"/><label id="lblEndDate" >End Date</label></td><td><input type="text" class="datepicker"/> </td> <td><input type="radio" /></td></tr></table>');
$(".datepicker").datepicker();
})
$('.container').on('click', '[type=radio]', function () {
var inc = validate($(this));
if (inc) {
$(this).prop('checked', false);
} else {
$(this).closest('.container').find('[type=radio]').prop('checked', false);
$(this).prop('checked', true);
}
});
function validate(el) {
var inc = 0,
arr = [],
flag = false,
tableClosest = (el[0].type == "radio") ? $(el).closest('table').find('input') : $('.container').find('table').last().find('input');
tableClosest.each(function () {
arr.push($(this).val());
if ($(this).val() == "") {
inc++;
}
});
if (inc > 0) {
alert('Field cant be empty');
flag = true;
} else {
if ((new Date(arr[0]).getTime() > new Date(arr[1]).getTime())) {
alert('End date must be greater than start date');
flag = true;
} else {
flag = false;
}
}
return flag;
}
我留下了一些地方,您可以在其中注入验证,在哪里添加或不添加,如果失败该怎么办等等。
**编辑:好的,如果任何字段为空并且复选框被选中,我现在已经添加了代码来阻止提交。
$(function(){
$("#btnAddAddress").click(function () {
//callAllValid();
$(".container").show();
$(".container").append('<table> <tr> <td> <label ID="lblStartDate">Start Date </label> </td> <td> <input type="text" class="datepicker"/><label id="lblEndDate" >End Date</label></td><td><input type="text" class="datepicker"/> </td> <td><input type="radio" onclick="callValid(this)"/></td></tr></table>');
$(".datepicker").datepicker();
});
});
function callValid(m){
var inputs = $(m).closest('tr').find('input[type=text]');
if(!$(m).is(':checked')){
return true;
}
var valid = true;
inputs.each(function(){
if($(this).val()===''){
alert('Empty');
valid = false;
return false;//breaks the each loop
}
});
//do anything with the var valid here
return valid;
}
function callAllValid(){
var t = $('table :checked');
var v = true;
t.each(function(){
v = callValid(this);
if(!v){
return false;
}
});
return v;
}
<link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form onsubmit="return callAllValid();" action="" method="POST">
<div class="AAA">
<input type="button" id="btnAddAddress" name="btnAddAddress" value="Add" /> <input type=submit />
<div class="container"> </div>
</div>
</form>
干杯
欢乐
关于验证我没有做太多..但我想我已经做了你想做的... html
<div class="AAA">
<input type="button" id="btnAddAddress" name="btnAddAddress" value="Add" />
<div class="container">
</div>
</div>
Javascript
$(document).ready(function () {
$(".datepicker").each(function () {
$(this).datepicker();
});
});
$("#btnAddAddress").click(function () {
debugger
$(".container").show();
$(".container").append('<table> <tr> <td> <label ID="lblStartDate">Start Date </label> </td> <td> <input type="text" class="datepicker"/><label id="lblEndDate" >End Date</label></td><td><input type="text" class="datepicker"/> </td> <td><input name="radioGroup" type="radio" /></td></tr></table>');
$(".datepicker").each(function () {
$(this).datepicker();
});
})
$('.container').on('click', '[type=radio]', function (e) {
if ($(e.target).prop("checked")) {
var table = $(e.target).closest("table")
var textboxes = $(table).find(".datepicker")
if ($($(textboxes)[0]).val() == "") {
alert("StartDate Cannot be empty");
}
if ($($(textboxes)[1]).val() == "") {
alert("EndDate Cannot be empty");
}
if (new Date($($(textboxes)[0]).val()) > new Date($($(textboxes)[1]).val())) {
alert("StartDatemust not be greater than end date");
}
}
})
能否请您查看更新后的内容 fiddle http://jsfiddle.net/ksjn7ko7/5/
好的,如果对您有帮助,请标记为答案