jquery validateプラグインを使用して、動的に読み込まれたフォームを検証しています。場合によっては、$ .postを使用してコンテンツをロードしています。コールバックでは、検証ルールを追加する関数を呼び出します。それは動作します。一部のコンテンツでは、私は$ .getを使用しています。そのコールバックでは、検証ルールを追加する関数も呼び出しています。しかし、$ .getを使用すると、フォームはまったく検証されません。.postでjqueryの検証をアタッチしても動作しません。
私の問題は何ですか?投稿を使って実際にどのような違いがありますか?
私はこれが重要なコードだと思いますが、必要に応じてこの後多くのコードを追加しました。私は検証ルールを追加する関数を呼び出す場所です:
$.get("http://localhost/SMICAdmin/adminactivities/admin_update_agent.php", { agent_id: $agentid }, function(data){
//Now, add the validation rules:
addUpdateAgentValidation();
$('#dialog-modal').dialog("option", "title", 'Uppdatera agent');
$("#dialog-modal").html(data).dialog("open");
これは、フォームを読み込むコードです:
ここ$("#agents td").live('click',function(event)
{
//alert("Agents");
event.preventDefault();
var col = $(this).parent().children().index($(this));
var $td= $(this).closest('tr').children('td');
var $agentid=$td.eq(2).text();
var $name=$td.eq(3).text();
if(col==0){
$.get("http://localhost/SMICAdmin/adminactivities/admin_update_agent.php", { agent_id: $agentid }, function(data){
//alert("GETDONE");
//Now, add the validation rules:
addUpdateAgentValidation();
$('#dialog-modal').dialog("option", "title", 'Uppdatera agent');
$("#dialog-modal").html(data).dialog("open");
});
//and the rest of the code
//.
//.
は、検証ルールを追加するための機能である:
function addUpdateAgentValidation(){
//alert("GETDONE 2");
$("#updateagentform").validate({
errorContainer: "#updateagentmessagebox",
errorLabelContainer: "#updateagentmessagebox ul",
wrapper: "li", debug:true,
rules: {
email1: {// compound rule
// required: true,
email: true
},
email2: {
// required: true,
equalTo: "#email1"
},
username: {
// required: true,
remote: "http://localhost/SMICAdmin/smicsoap/soap_is_agentusername_available.php"
},
password: {
// required: true
},
password2: {
//required: true,
equalTo: "#password1"
}
},
messages: {
email1: {// compound rule
email: "Korrekt emailadress saknas"
},
email2: {
equalTo: "Mailadresserna matchar inte varandra"
},
//username: "Anv‰ndarnamnet mÂste vara unikt"
username: {
remote: "Användarnamn finns redan"
},
password2: {
equalTo: "Lösenord inte lika"
}
}
});
};
これは私がフォームを投稿するところです:
$("#updateagentform").live("submit", function(e){
//Prevent the form from submitting normally
// alert("Trying to submit user update");
e.preventDefault();
$.post("http://localhost/SMICAdmin/adminactivities/admin_update_agent.php",$(this).serialize(),function(msg){
//alert the response from the server
//alert(msg);
$("#dialog-modal").dialog("close");
});
$("#usertable").empty();
$('#usertable').load("http://localhost/SMICAdmin/adminactivities/admin_load_agents.php");
$("#modalarea").empty();
$('#modalarea').css("visibility","hidden");
});
とコードフォームを生成:
echo "<div class='errormessage' id='updateagentmessagebox'>
<ul></ul>
</div>
<form id='updateagentform' method='post'>
Ändra önskade fält<br/>
* Förnamn: <input type='text' name='firstname' /> <br/>
* Efternamn: <input type='text' name='surname' /> <br/>
* Email: <input id='email1' type='text' name='email1' /> <br/>
* Repetera email: <input id='email2' type='text' name='email2' /> <br/>
* Användarnamn: <input id='username_ID' type='text' name='username' /><br/>
* Lösenord: <input id='password1' type='text' name='password' /><br/>
* Repetera lösenord: <input id='password2' type='text' name='password2' /><br/>";
foreach ($roles as $key=>$role) {
if(in_array($key, $role_ids)){
echo "<input type='checkbox' name='rid".$key."' value='rid".$key."' checked />".$role."<br/>";
}else{
echo "<input type='checkbox' name='rid".$key."' value='rid".$key."' />".$role."<br/>";
}
}
echo "<input id='submitupdateagentform' type='submit' value='Uppdatera agent' /></form>";
私の問題とどのように私はそれを修正すればよいとは何ですか?
おかげで、。実際には、私はあなたがスタードと同じ理由で、このようにしようとしましたが、どうしてそれはうまくいかないのですか?:$( "#dialog-modal")html(data、function(){ addUpdateCustomerUserValidation(); }}) .dialog( "open"); – Nicsoft
@Nicsoft:それは '.html()'の関数の引数のバージョンがあなたが関数から新しいHTMLを返すことを期待しているからです。 HTMLが追加された後に実行されるコールバック関数ではありません。 –
私は、関数が実行された後は通常のコールバックだと思っていました。私は関数を呼び出す前に、関数がロードされていることを確認するためにそこに置いていました。今私はよく知っている。ありがとう! – Nicsoft