2011-09-15 66 views
2

我的网站的每篇文章都有一个唯一的ID号码。当用户点击阅读文章时,我使用一个函数来获取当前的文章ID,因此可以自动选择下拉列表中相同值的选项。如何加载页面加载的PHP文件(jQuery提供)

例如,如果我有ID的文章中点击= 79

<option value="0" >Please Choose</option> 
<option value="97" <?php echo $postid == '97' ? 'selected="selected"' : '';?> >This is 97</option> 
<option value="98" <?php echo $postid == '98' ? 'selected="selected"' : '';?> >This is 98</option> 

我的下拉列表中会有“这是97”选择的选项。

这里的问题是,我使用的选择时,如下显示的形式的jQuery脚本:

<script language='JavaScript'> 
$(document).ready(function() { 
$('#termid').change(function() { 
var val = $(this).val(); 
$('#reservationdetails').empty().addClass('loading').load('../kratisis/forms/' + val + '.php', function(){$('#reservationdetails').removeClass('loading') }); 
}); 
}); 
</script> 

<div id="reservationdetails"></div> 

当用户进入以阅读文章97,所选的选项将是“这是97”,但所请求的PHP文件(从jQuery)将不会显示,除非我选择98,然后回到97.

我的问题是如何处理这个?我的意思是当用户首先进入文章时如何显示额外的php文件,但在下拉值更改时将其替换?

我想过使用<?php include("") ?>,但假设我在97上,然后点击98将会有2个额外的php文件。

谢谢你的想法。

回答

1

您正在触发关于更改的匿名函数,但您还需要在页面加载时触发它。摘要匿名函数来命名一个:

var loadPage = function(val) { 
    $('#reservationdetails') 
    .empty() 
    .addClass('loading') 
    .load('../kratisis/forms/' + val + '.php', function(){ 
     $('#reservationdetails').removeClass('loading'); 
    }); 
} 

然后将其绑定到change,并初步称之为:

loadPage($('#termid').change(function() { loadPage($(this).val()); }).val()); 

(你可以做到这一切在同一行,因为.change()将返回jQuery对象。的#termid

+0

谢谢你,这就像魅力一样!我已经接受你的答案。一个简单的问题,有没有什么办法,当我双击文本框(在我的情况下,我在文本框中使用datePicker)不显示任何以前的建议? – EnexoOnoma

+0

您的意思是以前的建议与浏览器自动填充一样吗?不确定,这是一个非常不同的问题。通过一切手段,虽然开了一个新的问题! – Alex

+0

好的!还有11个去 – EnexoOnoma

1

你应该尝试的jQuery trigger

$('#termid').trigger('change'); 

请务必使用AFTER触发器已绑定回调函数更改事件虽然。

1

首先,这类事件应该是一个功能:

$(document).ready(function() { 
    load_article = function (article_id) { 
     $('#reservationdetails').empty() 
     .addClass('loading') 
     .load('../kratisis/forms/' + val + '.php', function() { 
      $('#reservationdetails').removeClass('loading') 
     }); 
    }; 
}); 

那么为什么不使用ajax()而不是load()

$(document).ready(function() { 
    load_article = function (article_id) { 
     $.ajax({ 
      url: '../kratisis/forms/' + article_id + '.php', 
      beforeSend: function() { 
       $('#reservationdetails').html('').addClass('loading') 
      }, 
      success: function (data){ 
       // Assuming that #reservationdetails is the articles text area 
       $('#reservationdetails').html(data).removeClass('loading') 
      } 
     }); 
    }; 
}); 

现在,您可以在首页加载时添加默认文章。并且也是变化事件:

$(document).ready(function() { 
    var default_article = 1; 

    // Article chaning function 
    load_article = function (article_id) { 
     $.ajax({ 
      url: '../kratisis/forms/' + article_id + '.php', 
      beforeSend: function() { 
       $('#reservationdetails').html('').addClass('loading') 
      }, 
      success: function (data){ 
       // Assuming that #reservationdetails is the articles text area 
       $('#reservationdetails').html(data).removeClass('loading') 
      } 
     }); 
    }; 

    // Add the change event to the select 
    $('#termid').change(function() { 
     load_article($(this).val()); 
    }); 

    // Sets a default article on first page load 
    load_article(default_article); 
});