两个相同的jQuery片段表现不同

时间:2011-03-03 18:36:44

标签: php jquery string forms

我有一个PHP循环,输出一堆链接,然后每个链接都有一个href='javascript:$(\"#rnn\").val(" . $foo . ");$(\"#rnnNotifUnsub\").submit();'

它应该做的是将与那个链接有关的某些信息传递给#rnnNotifUnsub中的隐藏输入。但是,当我试用它时它甚至都没有提交。我尝试运行代码而不将变量传递给隐藏的输入并提交但当然没有做任何事情。这意味着我的问题在于$(\"#rnn\").val(" . $foo . ");弄乱了代码。

这是我的表格,以防万一:

<form action="php/retailerNameNotifUnsub.php" id="rnnNotifUnsub" method="POST">
    <input type="hidden" value="" name="retailerName" id="rnn"/>
    <input type="hidden" value="<?php print(selfURL()); ?>" name="url"/>
</form>

我有一组相同的代码用于相同的表单,只是名称不同,而且完美无缺。虽然它将int作为变量而不是字符串传递给隐藏的输入。也许这就是问题?

3 个答案:

答案 0 :(得分:2)

如果foo是一个字符串,则需要转义才能正确设置值。

自:

$(\"#rnn\").val(" . $foo . ");

要:

$(\"#rnn\").val(\"" . $foo . "\");

答案 1 :(得分:1)

内联Javascript是一个坏主意。它很难维护和混乱。

我会给你的链接一个data-retailer属性和一个类(我将使用retailer)。然后,您可以在script标记中使用jQuery,如下所示。

$(document).ready(function(){
    $('a.retailer').click(function(e) {
        e.preventDefault();

        $('#rnn').val($(this).data('retailer'));
        $('#rnnNotifUnsub').submit();
    });
});

示例链接:

<a class="retailer" data-retailer="Some Name" href="#">Content</a>

答案 2 :(得分:0)

如果你正在使用“打印(回声”你好世界“),马克是对的......或者......

href='javascript:$(\"#rnn\").val(\"" . $foo . "\");$(\"#rnnNotifUnsub\").submit();'