[英]Validate dropdown values with javascript
我有一个注册表,用户必须选择然后附上他/她的身份证件/图片。 有主要的文档类型(例如:Passport,Driv。Lic等)以及辅助的和附加的。
每个文档类型都有一些积分值(例如Pass Pass:70积分),我想要某种Java脚本验证功能,在选择文档类型(下拉列表)时会检查所选文档类型的总价值是否至少为100积分,否则返回错误消息“您需要至少100点od ID”。
<div class="row setup-content" id="step-3">
<legend>100 Poins of ID</legend>
<div class="form-group">
<label class="control-label col-sm-4">Primary document:</label>
<div class="col-sm-8">
<select class="form-control" name="fileType1" id="fileType1">
<option value="">Select type of ID</option>
<option value="Birth Certificate (70 pts)">Birth Certificate (70 pts)</option>
<option value="Australian Passport (70 pts)">Australian Passport (70 pts)</option>
<option value="Australian Citizen Certificate (70 pts)">Australian Citizen Certificate (70 pts)</option>
<option value="Overseas Passport (70 pts)">Overseas Passport (70 pts)</option>
</select>
<br>
<input type="file" name="file1" id="file1" title="<i class='glyphicon glyphicon-paperclip'></i> Choose File (PDF, Image or MS Document)" data-filename-placement="inside" class="btn-info btn-block" accept="image/*, application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-4">Secondary document:</label>
<div class="col-sm-8">
<select class="form-control" name="fileType2" id="fileType2">
<option value="">Select type of ID</option>
<option value="AUS Govt. Issued Current Licence or Permit (40 pts)">AUS Govt. Issued Current Licence or Permit (40 pts)</option>
<option value="Working With Children/Teachers Registration Card (40 pts)">Working With Children/Teachers Registration Card (40 pts)</option>
<option value="Health Care Card (40 pts)">Health Care Card (40 pts)</option>
<option value="Current Tertiary Education Institution Photo ID (40 pts)">Current Tertiary Education Institution Photo ID (40 pts)</option>
<option value="Reference from a doctor (40 pts)">Reference from a doctor (40 pts)</option>
<option value="Foreign/International Driver’s Licence (25 pts)">Foreign/International Driver's Licence (25 pts)</option>
<option value="Bank Statement (25 pts)">Bank Statement (25 pts)</option>
<option value="Phone/Utility Bill (25 pts)">Phone/Utility Bill (25 pts)</option>
<option value="Credit/Debit Card (25 pts)">Credit/Debit Card (25 pts)</option>
<option value="Medicare/Private Health Card (25 pts)">Medicare/Private Health Card (25 pts)</option>
<option value="Property Lease/Rental Agreement (25 pts)">Property Lease/Rental Agreement (25 pts)</option>
<option value="Tax Declaration (25 pts)">Tax Declaration (25 pts)</option>
<option value="Superannuation Statement (25 pts)">Superannuation Statement (25 pts)</option>
</select>
<br>
<input type="file" name="file2" id="file2" title="<i class='glyphicon glyphicon-paperclip'></i> Choose File (PDF, Image or MS Document)" data-filename-placement="inside" class="btn-info btn-block" accept="image/*, application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-4">Additional document (optional):</label>
<div class="col-sm-8">
<select class="form-control" name="fileType3" id="fileType3">
<option value="">Select type of ID</option>
<option value="AUS Govt. Issued Current Licence or Permit (25 pts)">AUS Govt. Issued Current Licence or Permit (25 pts)</option>
<option value="Working With Children/Teachers Registration Card (25 pts)">Working With Children/Teachers Registration Card (25 pts)</option>
<option value="Health Care Card (25 pts)">Health Care Card (25 pts)</option>
<option value="Current Tertiary Education Institution Photo ID (25 pts)">Current Tertiary Education Institution Photo ID (25 pts)</option>
<option value="Reference from a doctor (25 pts)">Reference from a doctor (25 pts)</option>
<option value="Foreign/International Driver’s Licence (25 pts)">Foreign/International Driver’s Licence (25 pts)</option>
<option value="Bank Statement (25 pts)">Bank Statement (25 pts)</option>
<option value="Phone/Utility Bill (25 pts)">Phone/Utility Bill (25 pts)</option>
<option value="Credit/Debit Card (25 pts)">Credit/Debit Card (25 pts)</option>
<option value="Medicare/Private Health Card (25 pts)">Medicare/Private Health Card (25 pts)</option>
<option value="Property Lease/Rental Agreement (25 pts)">Property Lease/Rental Agreement (25 pts)</option>
<option value="Tax Declaration (25 pts)">Tax Declaration (25 pts)</option>
<option value="Superannuation Statement (25 pts)">Superannuation Statement (25 pts)</option>
</select>
<br>
<input type="file" name="file3" title="<i class='glyphicon glyphicon-paperclip'></i> Choose File (PDF, Image or MS Document)" data-filename-placement="inside" class="btn-info btn-block" accept="image/*, application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document">
</div>
</div>
<input type="hidden" name="spam" />
<button type="submit" id="submit-btn" name="register" class="btn btn-warning pull-right"><i class="glyphicon glyphicon-send"></i> Submit</button>
</div> <!-- End Step 3 -->
如果这仅是客户端验证,则可能对您有用。
在选择的每个选项元素中添加一个data-points
。 例如<option data-points="45" value="Worth 45 points">Worth 45 points</option>
。
然后,您可以使用它来计算您拥有的总积分:
function calcPoints() {
var points = 0;
// Returns NodeList of selected options
var selects = document.querySelectorAll("option:checked");
// Convert to an Array
selects = Array.prototype.slice.call(selects,0);
selects.forEach(function(option) {
points += Number(option.getAttribute('data-points'));
})
// Do something with the points variable
console.log(points);
}
// Listen for click on the submit button
document.getElementById("submit-btn").addEventListener('click', calcPoints);
仅使用您提供的HTML来解决这个问题很有趣。
如果在SO页上运行代码,请进入全页视图以更好地查看它。
var totalPoints=0, primePoints=0, secondPoints=0, additionalPoints=0; $("#fileType1").change(function(){ $( "#fileType1 option:selected" ).each(function(){ var text = /\\d+/.exec($(this).text()); totalPoints-=primePoints; if (text===null) primePoints=0; else primePoints = parseInt(text[0]); totalPoints+=primePoints; $("#totalPoints").html(totalPoints); }); }); $("#fileType2").change(function(){ $( "#fileType2 option:selected" ).each(function(){ var text = /\\d+/.exec($(this).text()); totalPoints-=secondPoints; if (text===null) secondPoints=0; else secondPoints = parseInt(text[0]); totalPoints+=secondPoints; $("#totalPoints").html(totalPoints); }); }); $("#fileType3").change(function(){ $( "#fileType3 option:selected" ).each(function(){ var text = /\\d+/.exec($(this).text()); totalPoints-=additionalPoints; if (text===null) additionalPoints=0; else additionalPoints= parseInt(text[0]); totalPoints+=additionalPoints; $("#totalPoints").html(totalPoints); }); }); $("#submit-btn").click(function(){ if (totalPoints<70) alert("You have " + totalPoints + " but still need at least 100 points od ID"); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <div class="row setup-content" id="step-3"> <legend>100 Poins of ID</legend> <div class="form-group"> <label class="control-label col-sm-4">Primary document:</label> <div class="col-sm-8"> <select class="form-control" name="fileType1" id="fileType1"> <option value="">Select type of ID</option> <option value="Birth Certificate (70 pts)">Birth Certificate (70 pts)</option> <option value="Australian Passport (70 pts)">Australian Passport (70 pts)</option> <option value="Australian Citizen Certificate (70 pts)">Australian Citizen Certificate (70 pts)</option> <option value="Overseas Passport (70 pts)">Overseas Passport (70 pts)</option> </select> <br> <input type="file" name="file1" id="file1" title="<i class='glyphicon glyphicon-paperclip'></i> Choose File (PDF, Image or MS Document)" data-filename-placement="inside" class="btn-info btn-block" accept="image/*, application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"> </div> </div> <div class="form-group"> <label class="control-label col-sm-4">Secondary document:</label> <div class="col-sm-8"> <select class="form-control" name="fileType2" id="fileType2"> <option value="">Select type of ID</option> <option value="AUS Govt. Issued Current Licence or Permit (40 pts)">AUS Govt. Issued Current Licence or Permit (40 pts)</option> <option value="Working With Children/Teachers Registration Card (40 pts)">Working With Children/Teachers Registration Card (40 pts)</option> <option value="Health Care Card (40 pts)">Health Care Card (40 pts)</option> <option value="Current Tertiary Education Institution Photo ID (40 pts)">Current Tertiary Education Institution Photo ID (40 pts)</option> <option value="Reference from a doctor (40 pts)">Reference from a doctor (40 pts)</option> <option value="Foreign/International Driver's Licence (25 pts)">Foreign/International Driver's Licence (25 pts)</option> <option value="Bank Statement (25 pts)">Bank Statement (25 pts)</option> <option value="Phone/Utility Bill (25 pts)">Phone/Utility Bill (25 pts)</option> <option value="Credit/Debit Card (25 pts)">Credit/Debit Card (25 pts)</option> <option value="Medicare/Private Health Card (25 pts)">Medicare/Private Health Card (25 pts)</option> <option value="Property Lease/Rental Agreement (25 pts)">Property Lease/Rental Agreement (25 pts)</option> <option value="Tax Declaration (25 pts)">Tax Declaration (25 pts)</option> <option value="Superannuation Statement (25 pts)">Superannuation Statement (25 pts)</option> </select> <br> <input type="file" name="file2" id="file2" title="<i class='glyphicon glyphicon-paperclip'></i> Choose File (PDF, Image or MS Document)" data-filename-placement="inside" class="btn-info btn-block" accept="image/*, application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"> </div> </div> <div class="form-group"> <label class="control-label col-sm-4">Additional document (optional):</label> <div class="col-sm-8"> <select class="form-control" name="fileType3" id="fileType3"> <option value="">Select type of ID</option> <option value="AUS Govt. Issued Current Licence or Permit (25 pts)">AUS Govt. Issued Current Licence or Permit (25 pts)</option> <option value="Working With Children/Teachers Registration Card (25 pts)">Working With Children/Teachers Registration Card (25 pts)</option> <option value="Health Care Card (25 pts)">Health Care Card (25 pts)</option> <option value="Current Tertiary Education Institution Photo ID (25 pts)">Current Tertiary Education Institution Photo ID (25 pts)</option> <option value="Reference from a doctor (25 pts)">Reference from a doctor (25 pts)</option> <option value="Foreign/International Driver's Licence (25 pts)">Foreign/International Driver's Licence (25 pts)</option> <option value="Bank Statement (25 pts)">Bank Statement (25 pts)</option> <option value="Phone/Utility Bill (25 pts)">Phone/Utility Bill (25 pts)</option> <option value="Credit/Debit Card (25 pts)">Credit/Debit Card (25 pts)</option> <option value="Medicare/Private Health Card (25 pts)">Medicare/Private Health Card (25 pts)</option> <option value="Property Lease/Rental Agreement (25 pts)">Property Lease/Rental Agreement (25 pts)</option> <option value="Tax Declaration (25 pts)">Tax Declaration (25 pts)</option> <option value="Superannuation Statement (25 pts)">Superannuation Statement (25 pts)</option> </select> <br> <input type="file" name="file3" title="<i class='glyphicon glyphicon-paperclip'></i> Choose File (PDF, Image or MS Document)" data-filename-placement="inside" class="btn-info btn-block" accept="image/*, application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document"> </div> </div> <div id="totalPoints"></div> <input type="hidden" name="spam" /> <button type="submit" id="submit-btn" name="register" class="btn btn-warning pull-right"><i class="glyphicon glyphicon-send"></i> Submit</button> </div> <!-- End Step 3 -->
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.