当我将表单提交到服务器时,如何检查表单中是不是存在输入字段?

Posted

技术标签:

【中文标题】当我将表单提交到服务器时,如何检查表单中是不是存在输入字段?【英文标题】:How can I check a input field exists in the form when I submit it to the server?当我将表单提交到服务器时,如何检查表单中是否存在输入字段? 【发布时间】:2011-11-03 00:37:03 【问题描述】:

当我将表单提交到服务器时,如何检查表单中是否存在输入字段?

例如,我想检查表单中是否存在名为“mem_follow”的复选框。

或者我必须使用 javascript (jquery) 吗?

【问题讨论】:

【参考方案1】:

我猜您需要在提交表单后在服务器端进行检查。如果是这样的话,你可以这样检查......

<?php
if (isset($_POST['mem_follow']))

    // Work your server side magic here
 else 
    // The field was not present, so react accordingly

?>

希望这会有所帮助!

【讨论】:

【参考方案2】:

它必须是 Javascript。 PHP 无法从服务器进入浏览器的内部并为您检查。它只能检查字段名是否存在于提交的数据中。

在 jquery 中这很简单:

if ($('input[name="nameoffield"]'))  ... field exists ... 

当然,这提出了一个问题……为什么你需要知道一个字段是否存在?大概您是构建表单的人。您应该已经知道该字段是否存在。

【讨论】:

谢谢。实际上我从服务器端需要它。有时我在表单中有一个复选框,有时没有。所以我想让它在服务器端动态化。 if (isset($_REQUEST['nameoffield'])) ... it was submitted ... 使用if (isset($_POST['mem_follow'])) // do something 【参考方案3】:

在以下脚本中,除非选中复选框,否则表单不会提交。如果您尝试,则会显示带有错误消息的隐藏 div,让您知道原因。

<form action="test.php" method="post" id="myform">
    <input type="checkbox" name="checkbox" id="checkbox" value="YES" />
    <input type="submit" name="submit" value="submit" />
</form>
<div id="error_message_div" style="display:none">You must tick the checkbox</div>
<script>
    $('#myform').submit(function() 
        if($('#checkbox').attr('checked')) 
            return true;
         else 
            $("#error_message_div").show();
            return false;
        
    );
</script>

干杯 马特

【讨论】:

【参考方案4】:

您可以通过两种方式做到这一点:

通过服务器端:在 php 中

<?php
if (isset($_POST['mem_follow'])

    // Work your server side magic here
 else 
    // The field was not present, so react accordingly

?>

通过客户端:在 Jquery 中

$('#submit_button').click(function() 
  if ($('input[name="box_name"]')) 
    if($('input[name="box_name"]').attr('checked')) 
        return true;
     else 
        return false;
    
  
);

【讨论】:

【参考方案5】:

您可以使用 jQuery 并执行以下操作:

$('#myForm').submit(function (e) 
    if($(this).children(':checkbox[name=mem_follow]').length > 0)
        //exists
    else
        //doesn't exist
);

或者使用 php 并检查是否有任何名为 'mem_follow' 的变量:(这是用于 POST,虽然它是 GET 还是 POST 无关紧要)

if(isset($_POST['mem_follow']))
    //exists
else
    //doesn't exist

【讨论】:

【参考方案6】:

您可以以submit 事件处理程序的形式尝试此代码

if($("input[name=mem_follow]").length > 0)
    //It exists

【讨论】:

【参考方案7】:

这里的其他答案是正确的:您必须在客户端这样做。在复选框输入字段的情况下,如果未选中该框,则不能保证浏览器将包含该字段的 POST 参数。

例如,如果您在未选中复选框的情况下提交此表单:

<form action="test.php" method="post">
    <input type="checkbox" name="checkbox" value="YES" />
    <input type="submit" name="submit" value="submit" />
</form>

只会提交submit=submit 参数。

所以,不,您不能保证给定的复选框存在于服务器端的表单中。

【讨论】:

【参考方案8】:

所有元素都可以试试这个

number = document.form_name.elements.length;

其他输入的特定名称使用此

number = document.form_name.getElementsBYName('Name of Input').length;

就是这样

享受

【讨论】:

【参考方案9】:

我建议你使用 Jquery

$.fn.Exists = function() 
return $(this).length>0;


if ($("here are your selector to check").Exists()) 
    ...

简单实用! 你可以在任何地方使用这个Exists 方法))))

【讨论】:

【参考方案10】:

您可以使用 javascript(或 jQuery)来做到这一点:

<script>
    $('#myform').submit(function() 
        if($('#yourFieldId').val()=='') 
            alert('the field ' + $('#yourformField').name() + ' is empty !');
            return false;
         else 
            return true;
        
    );
</script>

您可以对所有字段逐一执行此操作,或者将所有条件放在 if 语句中。

【讨论】:

以上是关于当我将表单提交到服务器时,如何检查表单中是不是存在输入字段?的主要内容,如果未能解决你的问题,请参考以下文章

单击时检查表单中是不是存在不显示的元素

如何检查请求POST中是不是存在值? [复制]

检查表单输入是不是存在 [Django]

Codeigniter-检查用户是不是存在于月份

Angular 2 动态表单 - 实现取消功能

提交表单时,会话变量会更改值。