我試圖爲每個字段創建動態表單驗證。表單上的每個元素都在單獨的div中進行了扭曲。表單上的任何必填字段都在標籤元素上設置了「必需」類。這裏是例如我的形式:循環顯示錶單元素並驗證每個字段的JQuery/Javascript?
$('.datepick').each(function(){
\t $(this).attr('readonly', true).css("background-color", "#DCDCDC").datepicker({
\t \t format: "mm/dd/yyyy",
\t \t changeMonth: true,
changeYear: true,
showOn: 'focus',
showButtonPanel: true,
closeText: 'Clear',
onClose: function(){
var event = arguments.callee.caller.caller.arguments[0];
\t if ($(event.delegateTarget).hasClass('ui-datepicker-close')) {
$(this).val('');
}
}
\t });
\t });
.required:before {
content: '*';
color: red;
margin-right: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form name="myForm" id="myForm" method="POST" action="#">
\t <fieldset>
\t \t <legend>Info</legend>
\t \t \t <div class="formItem">
\t \t \t \t <label for="last_name" class="required">Last Name:</label>
\t \t \t \t <input type="text" name="frmst_lname" id="frmst_lname" value="" size="20" maxlength="30" title="Maximum length 30 characters." />
\t \t \t </div>
\t \t \t <div class="formItem">
\t \t \t \t <label for="first_name" class="required">First Name:</label>
\t \t \t \t <input type="text" name="frmst_fname" id="frmst_fname" value="" size="20" maxlength="30" title="Maximum length 30 characters." />
\t \t \t </div>
\t \t \t <div class="formItem">
\t \t \t \t <label for="dob" class="required">DOB:</label>
\t \t \t \t <input type="text" name="frmst_dob" id="frmst_dob" value="" size="10" maxlength="10" placeholder="MM/DD/YYYY" class="datepick" />
\t \t \t </div>
<div class="formItem">
\t \t \t \t <label for="sport" class="required">Sport:</label>
\t \t \t \t <select name="frmst_sport" id="frmst_sport">
\t \t \t \t \t <option value="">--Choose Sport--</option>
\t \t \t \t \t <cfoutput query="getSports">
\t \t \t \t \t \t <option value="#d_dist#">#d_sname#</option>
\t \t \t \t \t </cfoutput>
\t \t \t \t </select>
\t </div>
<div class="formItem">
\t \t \t <p align="center"><input type="button" name="frmSubmit" id="frmstSubmit" value="Submit"></p>
\t \t </div>
\t </fieldset>
</form>
這是我試過到目前爲止:
function frmValidation(frmID){
$('#'+frmID+' label').each(function(){
if($(this).hasClass('required') && $(this).next('input').val() == ''){
console.log($(this).attr('for'));
}
});
}
我是測試如果循環會趕上帶班「必要」的所有元素以及輸入字段對於所需元素爲空。我想知道這是否是循環元素的最佳選擇?另外,我想在每個字段的下一個或下一個字段中設置消息。如果用戶嘗試提交表單,但必填字段爲空,則應在屏幕上顯示如下內容:'此字段是必需的'。如果有人有任何建議或例子,請讓我知道。謝謝。
爲什麼不只是'required'屬性添加到所需的表單元素,然後你沒有寫任何代碼?或者,只需編寫'document.querySelectorAll(「。required」)'獲得使用'required'類的所有元素,而不是循環遍歷所有內容並測試該類?大多數(如果不是全部的話)這些代碼是不必要的。 –
「你不必編寫任何代碼」是什麼意思? –
如果將'required'屬性添加到表單元素,瀏覽器將自動對該元素進行驗證。 –