对输入使用jquery val()后,PHP$\u POST为空

对输入使用jquery val()后,PHP$\u POST为空,php,jquery,forms,validation,post,Php,Jquery,Forms,Validation,Post,我想检查输入的出生年份值。我已经发现,如果我使用jquery函数val()来获取这个输入的值,那么这个输入的php post将是空的。无需使用val()即可正常工作。在这里您可以看到代码的重要部分。这并不是很重要的形式能力,但检查是否写得不恰当或有任何打字错误是很有用的 谢谢你的帮助 <?php if (!empty($_POST['rn']) && isset($_POST['rn'])){ // proceed } else { echo "You ha

我想检查输入的出生年份值。我已经发现,如果我使用jquery函数val()来获取这个输入的值,那么这个输入的php post将是空的。无需使用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>

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

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

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


如果页面上有其他Javascript代码响应这些按键或鼠标事件,则可能会有其他此类副作用。

此处没有任何内容阻止用户通过键盘提交,完全绕过您的点击手柄。另外,请检查您的浏览器控制台是否有错误。您有几个语法问题,这些问题在您的控制台中很明显。这些错误正在阻止代码执行任何操作。总是检查errrors@charlietfl感谢s的建议,我还没有考虑过,我可能会尝试使用OnSubmit和PreventDefault。对不起,语法错误。我只提取了代码的几个部分,所以我在这里重写了它,并犯了错误,但在实际代码中它是可以的:/它必须是其他的东西,如果我对检查输入值的jquery部分进行注释,它就像一个符咒一样工作。您提供的代码可以工作,只要您将脚本向下移动。因此,我们还需要一些其他背景。你确定你所有的ID值都是唯一的,尤其是rok_nar?如果可能,请提供完整代码。如果你提供更少的代码,那么请首先检查问题是否会在更小的代码中重现。我已经准备好了里面的脚本,我只是没有在这里编写,对不起。然而,我已经把它从开头移到了正文的末尾,也没有任何改变:/请原谅我输入错误,但这里只有一个,我已经重写了它,在实际代码中它写得正确。
$("#kontrolaButton").click(function(){
    var rok = parseInt($("#rok_nar").val(),10);
    alert(rok);
    if (rok > 1900 && rok < 2016) {
        $("#odeslatButton").trigger('click');
    };
});