HTML表单提交为空

时间:2011-05-10 19:03:19

标签: php javascript jquery html

我有以下代码,我尝试在页面之间动态传递参数

<script type="text/javascript">
    function buildAndSubmitForm(index){
        <?  $args = 't='.$team.'&s='.$season.'&l='.$league.'&f='.$flag;
            $inputs = '';
            foreach($games as $game)
                $inputs .= '<input type="checkbox" name="games[]" id="games[]" value="'.$game.'" checked="checked" />';
        ?>
        var form = '<?='<form name="myForm" id="myForm" action="scr'?>';
        form = form.concat(index);
        form = form.concat('<?='.php?'.$args.'" method="post">'.$inputs.'</form>'?>');
        $('#formDiv').html(form);
        $('#myForm'.concat(index)).submit();
    }
</script>
<div style="display: inline">
    <div name="formDiv" id="formDiv" style="display: none;"></div>
    <a href="#" onclick="buildAndSubmitForm('a')">Home Stats</a>
    <a href="#" onclick="buildAndSubmitForm('b')">Visit Stats</a>
    <a href="#" onclick="buildAndSubmitForm('c')">Wins VS Losses</a>
    <a href="#" onclick="buildAndSubmitForm('d')">Home VS Visit</a>
    <a href="#" onclick="buildAndSubmitForm('e')">Overall</a>
</div>

问题在于,当我以一定的速度点击(点击链接,然后提交时(如半秒钟 - 后一秒)我点击另一个链接),我的表单被提交为第二个链接我点击了。 为什么会这样?

编辑: 尝试执行以下操作:

<div style="display: inline">
    <a href="<?php echo "scra.php?t=$team&s=$season&l=$league&f=$flag"; foreach($games as $game) {echo "&game=$game"; }?>" >Home Stats</a>
    <a href="<?php echo "scrb.php?t=$team&s=$season&l=$league&f=$flag"; foreach($games as $game) {echo "&game=$game"; }?>" >Visit Stats</a>
    <a href="<?php echo "scrc.php?t=$team&s=$season&l=$league&f=$flag"; foreach($games as $game) {echo "&game=$game"; }?>" >Wins VS Losses</a>
    <a href="<?php echo "scrd.php?t=$team&s=$season&l=$league&f=$flag"; foreach($games as $game) {echo "&game=$game"; }?>" >Home VS Visit</a>
    <a href="<?php echo "scre.php?t=$team&s=$season&l=$league&f=$flag"; foreach($games as $game) {echo "&game=$game"; }?>" >Overall</a>
</div>

EDIT2: 这些解决方案都没有奏效。

3 个答案:

答案 0 :(得分:0)

为什么使用Javascript连接通过PHP生成的文本?为什么不简单地做:

<?php

$form = <<<EOL
<form name="myForm" id="myForm" action="scr.php?{$args}" method="post">{$inputs}</form>
EOL;

?>

<script ....>

var form = <?php echo json_encode($form) ?>;
$('#formDiv').html(form);

etc...

同样,如果PHP中$args$inputs个变量中的任何内容包含引号(单引号或双引号),则很可能会生成无效的HTML,这会破坏您的<form>代码

答案 1 :(得分:0)

为什么不使用查询字符串(GET参数而不是POST)?

如果是因为复选框(已选中的游戏),您可以简单地使用不同的查询字符串传递em(&amp; games = baseball&amp; games = football ...)。你的变量将是一个数组。

这样你甚至不需要表格。

答案 2 :(得分:0)

如果您想要阻止双击,则需要在点击后禁用该链接。这是一个先前的SO问题,提供了一个禁用链接的jQuery解决方案:

jQuery disable a link