2012-09-21 141 views
0

我有一个页面(http://qccr.dyndns.org:82/on-air-schedule),其中访问者可以点击一周的一天,有我们的广播电台的时间表显示的那一天。唯一的问题是,当页面发生时,页面会完全刷新;如果只改变了页面中间的时间表,而不是整个页面,那将会更好。我真的不太了解JavaScript ...有没有简单的方法来做到这一点?防止页面刷新PHP表单提交?

相关的代码是在这里(我认为):

<?php 



    <div class="date-input-form"> 
     <form action="" method="post" id="ddateform" > 
      <input type="hidden" name="ddate" id="ddate" size="11" maxlength="10" value="" /> 
      <?php echo JHTML::_('form.token'); ?> 
     </form> 
    </div> 


    <div id="navcontainer"> 

    <ul id="navlist"> 
    <?php if($currentday=="Monday") : ; ?> 
    <li class="currentday"><?php echo $currentday; ?></li> 
    <?php else : ?> 
    <li><a href="#" onclick="document.getElementById('ddate').value = '<?php echo date('Y-m-d', strtotime('monday')); ?>'; document.getElementById('ddateform').submit();">Monday</a></li> 
    <?php endif; ?> 

    <?php if($currentday=="Tuesday") : ; ?> 
    <li class="currentday"><?php echo $currentday; ?></li> 
    <?php else : ?> 
    <li><a href="#" onclick="document.getElementById('ddate').value = '<?php echo date('Y-m-d', strtotime('tuesday')); ?>'; document.getElementById('ddateform').submit();">Tuesday</a></li> 
    <?php endif; ?> 

    <?php if($currentday=="Wednesday") : ; ?> 
    <li class="currentday"><?php echo $currentday; ?></li> 
    <?php else : ?> 
    <li><a href="#" onclick="document.getElementById('ddate').value = '<?php echo date('Y-m-d', strtotime('wednesday')); ?>'; document.getElementById('ddateform').submit();">Wednesday</a></li> 
    <?php endif; ?> 

    <?php if($currentday=="Thursday") : ; ?> 
    <li class="currentday"><?php echo $currentday; ?></li> 
    <?php else : ?> 
    <li><a href="#" onclick="document.getElementById('ddate').value = '<?php echo date('Y-m-d', strtotime('thursday')); ?>'; document.getElementById('ddateform').submit();">Thursday</a></li> 
    <?php endif; ?> 

    <?php if($currentday=="Friday") : ; ?> 
    <li class="currentday"><?php echo $currentday; ?></li> 
    <?php else : ?> 
    <li><a href="#" onclick="document.getElementById('ddate').value = '<?php echo date('Y-m-d', strtotime('friday')); ?>'; document.getElementById('ddateform').submit();">Friday</a></li> 
    <?php endif; ?> 

    <?php if($currentday=="Saturday") : ; ?> 
    <li class="currentday"><?php echo $currentday; ?></li> 
    <?php else : ?> 
    <li><a href="#" onclick="document.getElementById('ddate').value = '<?php echo date('Y-m-d', strtotime('saturday')); ?>'; document.getElementById('ddateform').submit();">Saturday</a></li> 
    <?php endif; ?> 

    <?php if($currentday=="Sunday") : ; ?> 
    <li class="currentday"><?php echo $currentday; ?></li> 
    <?php else : ?> 
    <li><a href="#" onclick="document.getElementById('ddate').value = '<?php echo date('Y-m-d', strtotime('sunday')); ?>'; document.getElementById('ddateform').submit();">Sunday</a></li> 
    <?php endif; ?> 

    </ul> 
</div> 

回答

0

无论你调用JavaScript函数,做一个return false;,防止默认行为。

<a onclick="dothis(); return false;" href="#">Click Me</a> 

- 或 -

<a onclick="dothis();" href="#">Click Me</a> 
<script type="text/javascript"> 
    function dothis() { /* stuff here */ return false; } 
</script> 

了解一些JavaScript基础知识,你将得到更好的服务:)

+0

为此,您可以利用的途径之一 - 你可以在'form'标签使用'onsubmit'属性,或者在'input'标签,使用'onclick'什么为此。 –

+0

所以,与其例如:

  • Monday
  • 我要补充 “回归:假的;”到最后,这样吗?
  • Monday
  • 如果是这样,我只是试了一下,没有奏效。 –

    +0

    那么你在做什么是非常规和倒退。如果您提交的形式,主要是网页的一部分,将提交整个 –

    1

    我不知道很多关于PHP所以借此与一粒盐。

    HTML表单不刷新在默认情况下提交页面。有些东西(我在猜测PHP)导致生成一个HTML表单,导致表单提交时页面刷新。

    我不知道,如果巴里的回答会的工作,但如果你想试试看,更换了代号为周一立本:

    随着您的格式

    <?php if($currentday=="Monday") : ; ?> 
        <li class="currentday"><?php echo $currentday; ?></li> 
        <?php else : ?> 
        <li><a href="#" onclick="document.getElementById('ddate').value = '<?php echo date('Y-m-d', strtotime('monday')); ?>'; document.getElementById('ddateform').submit(); return false;">Monday</a></li> 
    <?php endif; ?> 
    

    有了健全的格式

    <script type="text/javascript"> 
        function onMondayClick(event) { 
         document.getElementById('ddate').value = '<?php echo date('Y-m-d', strtotime('monday')); ?>'; 
         document.getElementById('ddateform').submit(); 
         return false; 
        } 
    </script> 
    
    <?php if($currentday=="Monday") : ; ?> 
        <li class="currentday"><?php echo $currentday; ?></li> 
        <?php else : ?> 
        <li><a href="#" onclick=onMondayClick>Monday</a></li> 
    <?php endif; ?> 
    
    +0

    页注意添加行返回false;为回调函数的结束是调用方法event.preventDefault()和event.stopPropagation()与事件被自动传递到回调函数的第一自变量的等价物。 – Bobby

    +0

    谢谢,但那也没用。 –

    +0

    那么你应该弄清楚为什么被用在提交自动刷新页面非默认选项生成HTML表单。一旦你有了,你可以使用PHP或Javascript Ajax调用从服务器获取数据,然后使用Javascript来修改你的页面以反映新的数据。 – Bobby

    0

    为此,您可以使用jQuery后的功能和/或有一个Ajax调用张贴FORMDATA

    +0

    这根本不是真的 –