2017-07-07 9 views
1

私はユーザーが特定の科目を選択できるドロップダウンメニューを使用します。サブジェクトがドロップダウンで選択されている場合は、ajaxを介してテキストボックスがポップアップ表示され、ユーザーは内容を入力できます。ページをリフレッシュした後のon.Change関数からのリロードAjaxコンテンツ

フォームが送信されてフォームの内容が失われた場合、またはユーザーが単にページを更新する場合、Ajaxコンテンツ(テキストボックス)は消えて、別のサブジェクトが選択されたときにのみ再び表示される。これはおそらくchangeを使用し、ドロップダウンが再び変更されたときにこれだけのdivにAJAX入力を置く私のAJAXのスクリプトから茎

$(function() { 
$('#subjectapp1').change(function() 
{ 
var self = $(this); 

$.post("/blabla/potatoe/subjectpartial1.php", 
{ 
subject1: self.val() 
}, 
function(data) 
{ 
    $('#subjectqualidiv1').html(data); 
}); 

}); 
}); 

私のドロップダウンメニュー:

<select name="subject1" id="subjectapp1"> 
<option value="">Please choose</option> 
<?php foreach ($subjects as $subject){ ?> 
    <option <?php if ($_POST['subject1'] == $fach['subject_id']) {echo 'selected';} ?> value="<?php echo $subject['subject_id']; ?>"><?php echo $subject['subject']; ?></option> 

のdivそれがにロードされます3210

<div id="subjectqualidiv1"></div> 

ajaxコンテンツ(subjectpartial1.php)には、ユーザーが自分の資格を入力できるテキストボックスが含まれています。

件名を再度変更することなくページを更新するときに、divに自動的にajaxコンテンツが読み込まれる可能性はありますか?

EDIT(WORKS):

$(document).ready(function() { 
// For loading the ajax content on refresh/form submit 
    var subject1 = $('#subjectapp1'); 

$.post("/blabla/potatoe/subjectpartial1.php", 
{ 
subject1: subject1.val() 
}, 
function(data) 
{ 
    $('#subjectqualidiv1').html(data); 
}); 

$('#subjectapp1').change(function() 
{ 
var self = $(this); 

$.post("/blabla/potatoe/subjectpartial1.php", 
{ 
subject1: self.val() 
}, 
function(data) 
{ 
    $('#subjectqualidiv1').html(data); 
}); 

}); 
}); 

ありがとう:望ましい結果を得ている、私は次のことを試してみましたコメントに基づいて!

+1

はい - あなたは、文書準備ハンドラ内で直接AJAXを置くことができます。また、変更イベントから呼び出すことができる必要があります。 –

+1

'onchange'イベントの中であなたのコードをまだ呼び出せる間にこれを達成する最良の方法は、それを関数に入れて' $(document).ready() '関数の中から呼び出すことです。ページがロードされたときに実行されます。 –

答えて

1

ページロード時に実行される$(document).ready()関数にAJAXを呼び出す関数を追加できます。ページが読み込まれてセレクタが空になる場合があるため、関数を実行する前に有効なデータを確認するように注意してください。情報が不足している場合は、HTMLのrequired属性を調べて、その要素にデータが存在しない場合にフォームの送信を防止することができます。それは不十分なデータのリフレッシュを防ぎます。

+0

私は '$(document).ready()'関数とイベントのトリガにコードを挿入しました。有効なデータをチェックすることとまったく同じ意味ですか?値が空でないときに起動するだけではありませんか? – Franky2207

+0

ページをリフレッシュまたは最初に読み込むと、ページが読み込まれたときに '$(document).ready()'が呼び出されますが、これらのイベントのデフォルトのブラウザ動作のために、ほとんどのデータは空になります。このため、AJAX呼び出しではready関数内で呼び出されたときに空の変数があり、エラーや予期しない結果が返される可能性があります。 – yanman1234

1

あなたの現在のコードと一緒にこれを行うことができます。

$(document).ready(function() { 
$("#subjectapp1").trigger('change'); 
} 
関連する問題