我已經嘗試了無數次來自這裏和其他地方的建議,但沒有任何效果,所以請任何人都可以投射爲什麼我的代碼失敗。驗證不適用於填充了Ajax的對話框
由Ajax調用創建的HTML是(該選擇的內容被隱藏,但都是正確地關閉)
<div id="adc" class="ui-dialog-content ui-widget-content" style="display: block; width: auto; min-height: 46px; max-height: none; height: auto;">
You must complete fields marked *.
<br>
<br>
<form id="addcont" ;="" autocomplete="off" name="addcont">
<fieldset>
Type of contractor/supplier:
<select id="otype" name="org_type">
<div id="orgnm" class="hideonload" style="display: block;">
* Full name of organisation:
<input id="full_name" class="required" type="text" size="50" value="" name="full_name">
<br>
<span id="flagger"></span>
<input type="hidden" value="test" name="dbextn">
<input type="hidden" value="1" name="princip">
*Business Group:
<br>
<select id="bgroup" name="busn_group">
<br>
<div id="clasdiv" class="hideonload" style="display: block;">
* Business Class:
<select id="bclass" name="busn_clas">
</div>
<div id="typediv" class="hideonload" style="display: block;">
<br>
<div id="locat" class="hideonload" style="display: block;">
The location you add MUST be that of the master contact address.
<br>
<table id="loc-add">
<tbody>
<tr>
<td width="100px">
<strong>Principal address</strong>
:
</td>
<td width="500px">
<select id="loc_type" name="loc_type">
</td>
</tr>
<tr>
<td>Location name:</td>
<td>
<input id="locat_name" type="text" placeholder="You must give the location a name" size="40" value="" name="locat_name">
</td>
</tr>
<tr>
<td>*Address line1:</td>
<td>
<input id="address1" class="required" type="text" size="40" value="" name="address1">
<input type="hidden" value="1" name="status">
</td>
</tr>
<tr>
<td>Address line2:</td>
<td>
<input id="address2" type="text" size="40" value="" name="address2">
</td>
</tr>
<tr>
<td>*Town :</td>
<td>
<input id="town" class="required" type="text" size="40" value="" name="town">
</td>
</tr>
<tr>
<td>*Postcode:</td>
<td>
<input id="postcode" class="required" type="text" size="10" value="" name="postcode">
</td>
</tr>
<tr>
<td>County:</td>
<td>
<select name="county">
</td>
</tr>
<tr>
<td> Country:</td>
<td>
<select id="country" name="country">
</td>
</tr>
<tr>
<td>*Phone no:</td>
<td>
<input id="phone" class="required" type="text" size="15" value="" name="phone">
<br>
</td>
</tr>
</tbody>
</table>
<br>
</div>
</div>
</fieldset>
</form>
</div>
我可以從螢火蟲看到,包括驗證器核心庫被加載。
我的jQuery腳本是:
$(document).ready(function(){
$('.nextbut').hide();
$(document).on('click','a.addcontr', function (e) {
e.preventDefault();
var organid=$('#basinf').attr("parn");
var usrd = $('#basinf').attr("pare");
var dbextn = $('#basinf').attr("dbextn");
var parf = $('#basinf').attr("parf");
var $tag = $("<div id='adc'><img src='images/loading.gif'></div>");
$.post("ajax/createContractor.php",
{organid: organid, dbextn: dbextn, parf: parf},
function(data) {
$tag.html(data).dialog({autoOpen: false, title: "Adding a contractor",
width: 540,
modal: true,
buttons: {
"Add Contractor" : function() { $('#addcont').validate({debug: true ,
rules:{
full_name: "required",
locat_name: "required",
address1:"required",
town:"required",
postcode:"required"
},
messages: {
full_name: " Enter name of organisation",
locat_name: " Enter location name",
address1: " Enter address",
town: " Enter town or city",
postcode: " Enter postcode"},
submitHandler:function(){$.post("ajax/insContractor.php",$('#addcont').serialize(),function(data){
$('#adc').dialog("close");});}
});
},
"Cancel": function() {
$(this).dialog("close");
}
},
close: function() {$('#addcont').remove();
$('#adc').remove();
}}).dialog('open');
});$('#addcont').validate();
});
});
我試圖把調用validate無處不在,包括通過開放:
function(event, ui){$('#addcont').validate();}, just after modal: true,
創建一個jsFiddle,否則,我不認爲很多人會想要挖掘這樣一個複雜的問題。 – Sparky 2014-12-13 17:23:25