我有一份登记表,检查他/她是否是我们的客户。如果用户选择是,则会显示两个字段(客户编号和邮政编码)。但是,如果用户选择否,我希望表单只是发送并转到下一页。
由于它现在正常工作,当用户选择否时,表单在尝试提交时出错,因为客户编号+和邮政编码留空。
在单选按钮选择中重定向表单的最佳方法是什么?或者,如果用户选择否,是否可以预先填写客户编号+ zipcdoe字段?是否有可行的方法来重定向?
我的单选按钮代码:
Yes <input type="radio" onclick="javascript:yesnoCheck();" name="yesno" id="yesCheck"> No <input type="radio" onclick="javascript:yesnoCheck();" name="yesno" id="noCheck" onChange="OnChangeForm" value="epc">
JSFiddle: https://jsfiddle.net/7ycha0ge/
答案 0 :(得分:1)
你对自己的案子并不十分具体,但我相信这三个可能性:
是你在javascript中验证字段的填充而不考虑你的输入是隐藏的,在这种情况下你应该重新访问你的代码,只有在字段可见或添加/删除时才会抛出错误根据无线电的选择完整地填写HTML中的字段。
您的服务器端代码总是希望填充未填充数据的参数,并且会引发错误。
请考虑使用这样的表单(带有novalidate属性):
&LT; form novalidate&gt;&lt; /形式&GT;
这样你就不会对浏览器验证不敏感,但你必须自己验证
编辑:添加和删除元素的实时示例
function yesnoCheck(resp) {
var yes = '<div class="form-group">'+
'<label for="account" class="col-sm-3 control-label">Account Number</label>'+
'<div class="col-sm-9">'+
'<input type="text" class="form-control" id="account" name="account" placeholder="Enter Account Number">'+
'</div>'+
'</div>'+
'<div class="form-group">'+
'<label for="lastname" class="col-sm-3 control-label">Zip Code</label>'+
'<div class="col-sm-9">'+
'<input type="text" class="form-control" id="zip" name="zip" placeholder="Enter Zip Code">'+
'</div>'+
'</div>';
if(resp == 'yes') {
$('#ifYes').append(yes);
} else {
$('#ifYes').html('');
}
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div class="section section-breadcrumbs">
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Register</h1>
</div>
</div>
</div>
</div>
<div class="section">
<div class="container">
<div class="row">
<div class="col-sm-8 col-sm-offset-2">
<div class="panel panel-default">
<div class="panel-body">
<h2>Online Training Access</h2>
<p><em>We need to verify if you are a retailer first. Please enter your account number without spaces or dashes, or select 'no' if you are a consumer.</em></p><br>
<form class="form-horizontal" role="form" id="my-account-form" method="post" action="">
<div class="col-sm-offset-3"></div>
<div class="form-group">
<label for="lastname" class="col-sm-3 control-label">Are you a retailer?</label>
<div class="col-sm-9">
Yes <input type="radio" onclick="javascript:yesnoCheck('yes');" name="yesno" id="yesCheck">
No <input type="radio" onclick="javascript:yesnoCheck('no');" name="yesno" id="noCheck">
</div>
</div>
<!-- the contents will only be added if yes -->
<div id="ifYes">
</div>
</form>
</div>
</div>
</div>
</div>
</div>
&#13;