【问题标题】:PHP $_POST is empty after using jquery val() on input在输入上使用 jquery val() 后 PHP $_POST 为空
【发布时间】:2016-05-02 10:39:53
【问题描述】:

我想检查出生年份的输入值。我发现如果我使用 jquery 函数 val() 来获取这个输入的值,那么这个输入的 php 帖子将为空。不使用 val() 也能正常工作。在这里您可以看到代码的重要部分。它不是那么重要的形式能力,但检查是否写有任何不当或任何错误输入会很有用。

感谢您的帮助。

<?php
if (!empty($_POST['rn']) && isset($_POST['rn'])){
    // proceed
} else {
    echo "You haven't filled all inputs";
}
?>
<script>
$("#kontrolaButton").click(function(){
    var rok = parseInt($("#rok_nar").val(),10);
    if (rok > 1900 && rok < 2016) {
        $("#odeslatButton").trigger('click');
    };
});
</script>
<form accept-charset="utf-8" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" class="send_form">

<input class="bold" id="rok_nar" type="text" name="rn" placeholder="Rok narození"/>
<input type="button" value="Odeslat" name="kontrola" id="kontrolaButton" /> 
<input type="submit" value="Odeslat" name="odeslat" id="odeslatButton" style="visibility: hidden;" />

</form>

更新: 我可能已经找到了问题所在。我没有在这里写它,因为我不认为它是一个问题。我的脚本如下所示:

$("#kontrolaButton").click(function(){
    var rok = parseInt($("#rok_nar").val(),10);
    alert(rok);
    if (rok > 1900 && rok < 2016) {
        $("#odeslatButton").trigger('click');
    };
});

删除警报后,代码可以运行:/ 有趣...

【问题讨论】:

  • 没有什么可以阻止用户在这里通过键盘提交并完全绕过您的点击处理程序
  • 同时检查您的浏览器控制台是否有错误。您有几个语法问题将在您的控制台中很明显。这些错误会阻止您的代码执行任何操作。始终检查错误
  • @charlietfl 感谢您的建议,我还没有考虑过,我可能会尝试使用 on submit 并防止默认。抱歉语法错别字。我只是拿了几部分代码,所以我在这里重写了它,并犯了错误,但在实际代码中是可以的:/
  • 它必须是别的东西,如果我评论 jquery 部分检查输入的值,它就像一个魅力。
  • 您提供的代码有效,前提是您将脚本向下移动。所以我们需要一些其他的上下文。您确定您的所有 ID 值都是唯一的,尤其是 rok_nar?如果可能,请提供完整的代码。如果您提供的代码较少,请先检查该问题是否在该较小的代码中重现。

标签: php jquery forms validation post


【解决方案1】:

看起来您试图在加载之前访问 dom 中的输入。我没有看到准备好的文件。您需要将您的脚本粘贴在准备好的文档中,以便将其延迟到完全解析 dom 之前,或者将您的逻辑移动到页面底部,以便在您尝试查找它们时元素存在。

【讨论】:

  • 里面的脚本已经准备好了,只是还没写到这里,抱歉。但是我已经把它从头部移到了身体的末端,也没有改变:/
【解决方案2】:

您应该将脚本向右移动到 HTML 正文的末尾,以便当 kontrolaButton 元素在 DOM 中时执行。

请注意,您为关闭alert(rok); 而发出的鼠标向下/向上或按键/释放可能会干扰表单的提交。例如,我可以重现这样的问题:我按下 ESC 键关闭警报,虽然表单提交了数据,但没有呈现下一页;这只是一个空白页。这可能非常依赖于浏览器,但在我的设置中,ESC 键显然会中断页面​​的呈现。

可能还有其他这样的副作用,当然如果您在页面上有其他 Javascript 代码来响应这些键或鼠标事件。

【讨论】:

  • 不好意思打错了,不过只有这里,我已经重写了,实际代码写的正确。
猜你喜欢
  • 1970-01-01
  • 2011-04-10
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
相关资源
最近更新 更多