阻止PHP表单提交页面刷新?

时间:2012-09-21 19:06:05

标签: php javascript forms refresh submit

我有一个页面(http://qccr.dyndns.org:82/on-air-schedule),访问者可以点击一周中的某一天,并显示当天我们广播电台的时间表。唯一的问题是当发生这种情况时页面会完全刷新;如果仅改变页面中心的时间表而不是整个页面,那会更好。我对javascript一点都不太了解...有一种简单的方法吗?

相关的代码片段(我认为):

    <?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>

3 个答案:

答案 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; ?>

答案 1 :(得分:0)

在您调用的任何javascript函数中,执行return false;以防止默认行为。

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

-OR -

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

了解一些javascript基础知识,您将得到很好的服务:)

答案 2 :(得分:0)

您可以使用jquery post函数和/或使用ajax调用来发布formdata