启用值为previous的下一个表单元素
Enable next form element with the value of previous
我确实需要创建一个表单。在该表单中,我需要一个接一个地启用表单元素。这意味着,如果用户向第一个元素输入了有效的数据,那么我希望自动聚焦下一个元素,以此类推。
注意:当页面加载时,我想保持所有元素禁用,除了第一个元素。
这是我的HTML形式。
<form role="form" class="banner" method="post" action="">
<div class="form-group">
<div class="icon-addon addon-md">
<input type="text" name="name" placeholder="Your Name" class="form-control first-name sequence" autocomplete="off" required>
<label for="name" class="glyphicon glyphicon-user" data-toggle="tooltip" data-placement="left" title="Enter Your Name"></label>
</div>
</div>
<div class="form-group">
<div class="icon-addon addon-md">
<input type="email" name="email" placeholder="Your Email" class="form-control email_address sequence" autocomplete="off" disabled required>
<label for="email" class="glyphicon glyphicon-envelope" rel="tooltip" title="Enter Your Email"></label>
<span class="email-error"></span>
</div>
</div>
<div class="form-group">
<div class="icon-addon addon-md">
<input type="text" name="phone" placeholder="Your Phone Number Eg: xx-xxx-xxx" class="form-control phone-number sequence" autocomplete="off" disabled required>
<label for="email" class="glyphicon glyphicon-phone" rel="tooltip" title="Enter Your Phone Number"></label>
</div>
</div>
<div class="element-left">
<div class="form-group">
<div class="icon-addon addon-md">
<input type="text" name="charter-date" placeholder="Pick Up Date" class="form-control datepicker sequence" autocomplete="off">
<label for="date" class="glyphicon glyphicon-calendar" rel="tooltip" title="Prefered Charter Date"></label>
</div>
</div>
</div>
<div class="element-right">
<div class="form-group">
<div class="icon-addon addon-md">
<input type="text" name="charter-time" placeholder="Pick Up Time" class="form-control timepicker sequence" autocomplete="off">
<label for="time" class="glyphicon glyphicon-time" rel="tooltip" title="Time of Charter"></label>
</div>
</div>
</div>
<p class="form-actions">
<button type="submit" name="submit" class="btn btn-default btn-block">
<span class="btn-orange-inner">Send</span>
</button>
</p>
</form>
我是这样在jQuery中尝试的:
// form validation
function fakeValidator(event) {
var flag = false;
var $element = $(event.target);
var values = $element.val();
if (values.length >= 3) {
if($element.hasClass('email_address')) {
if(validemail(values)){
flag = true ;
}else{
flag =false;
}
}
flag =true;
} else {
flag =false;
}
if(flag){
//alert('hi');
$element.addClass('valid');
enableNextElement(event);
} else{
alert('hi el');
$element.removeClass('valid');
//$element.addAttr('disabled');
}
}
function validemail(value){
var emailReg ="/^([a-zA-Z0-9_.+-])+'@(([a-zA-Z0-9-])+'.)+([a-zA-Z0-9]{2,4})+$/";
}
function enableNextElement(event) {
var $element = $(event.target);
if ($element.hasClass('valid')) {
$element.closest('.form-group')
.next('.form-group')
.find('.sequence')
.removeAttr('disabled');
}
}
$('.sequence').on('blur keyup', fakeValidator);
但是我的问题是,如果我输入了一个无效的电子邮件,下一个元素是启用的。但我想启用下一个元素,如果它是一个有效的电子邮件在电子邮件字段。
谁能告诉我这是怎么回事?谢谢你!2件事:
- 您应该从您的电子邮件验证功能
return true
或false
,即validemail
- 您的
中删除包装regex
存储为字符串,因此您不能在其上应用test
函数。在" "
以上的改变会给你想要的结果。
function validemail(value){
var emailReg =/^([a-zA-Z0-9_.+-])+'@(([a-zA-Z0-9-])+'.)+([a-zA-Z0-9]{2,4})+$/; //regex
return emailReg.test(value); //use test which returns true or false
}
它仍然会启用phonenumber
,因为您已经以这种方式编写了validation
。
你的验证:
if (values.length >= 3) {
//this is ok for name
if($element.hasClass('email_address')) {
if(validemail(values)){
flag = true;
}else{
flag =false;//even though flag is false here
}
}
flag =true; //when it comes to this line it again makes it to true
//and for email along with length>3, valid email address has also to be validated
} else {
flag =false;
}
<<p> 我的工作区/em> if (values.length >= 3) {
flag =true; //set this first
if($element.hasClass('email_address')) {//then perform other validations
if(validemail(values)){
flag = true ;
}else{
flag =false;
}
}
} else {
flag =false;
}
相关文章:
- jquery mobile上多个页面上的一个表单
- 如何在我的情况下禁用表单提交
- 循环遍历包含另一个表单的表单
- 如何将一个表单中的项目添加到 Rails 中另一个表单的下拉选项
- 在PHP中将下拉选择列表的内容从一个表单传递到另一个表单
- 两个表单,一个选择/下拉框-需要将选择值从一个表单复制到另一个表单
- 如何跳转到下一个表单输入字段
- 如果当前输入有错误或警告,则禁用所有下一个表单输入字段
- 根据下拉表单选择在另一个页面上加载 Div 中的数据
- 在没有一个表单的情况下用ENTER阻止提交
- 对动态插入的表单元素禁用下一个表单字段
- 与另一个表单在同一页面上的下拉表单导航
- 启用值为previous的下一个表单元素
- 将选中的复选框传递到下一个表单
- HTML和JSP—如何在不移动到另一个页面的情况下启动表单上的操作
- 在至少选择一个下拉选项的条件下提交表单
- 用javascript从另一个表单中按下隐藏的按钮
- 将焦点()放在下一个表单元素上的Javascript函数不起作用
- 在AngularJS中创建一个下钻表单
- 带有下拉项的HTML表单,如何从下一个表单中实时删除它