【问题标题】:Invalid-feedback not apear (Server-side) (Bootstrap 4)无效反馈未出现(服务器端)(引导程序 4)
【发布时间】:2021-03-28 06:49:22
【问题描述】:

我尝试在输入为空白时显示无效反馈,但似乎无法显示。有人可以帮忙吗?

<!--======================================== CSS =======================================-->
    <link href="../css/bootstrap.min.css" rel="stylesheet">
    <link href="../css/mycss.css" rel="stylesheet">

    <!--=================================== Core JS Files ==================================-->
    <script src="../js/core/jquery.3.2.1.min.js" type="text/javascript"></script>
    <script src="../js/core/bootstrap.min.js" type="text/javascript"></script>
    <script src="../js/core/popper.min.js" type="text/javascript"></script>

</head>

<body>
    <!--===================================== Content ================================-->
    <div class="container">
        <p class="mb-4">Fill the form below to add new record on database</p>
        <form action="<?= htmlspecialchars($_SERVER[" PHP_SELF "]); ?>" method="post" class="needs-validation">
            <div class="form-group">
                <label for="hostelName">Hostel Name</label>
                <input type="text" class="form-control <?= (!empty($name_err)) ? 'is-invalid' : ''; ?>" id="hostelName" name="hostelName" value="<?= $name; ?>" required>
                <div class="invalid-feedback" >
                        <?= $name_err;?>
                    </div>
            </div>

            <button type="submit" class="btn btn-primary" style="width: 80px;" id="btnSubmit">Submit</button>
            <button type="button" class="btn btn-secondary" style="width: 80px;" data-dismiss="modal">Close</button>
        </form>
    </div>
</body>

这里是 MySQLi

// Define variables and initialize with empty values
$name = $block = $level = $room = $status = "";
$name_err = $block_err = $level_err = $room_err = $status_err = "";

// Form Submit (What happen when button SUBMIT click)
if ( $_SERVER[ "REQUEST_METHOD" ] == "POST" ) {

    // Data Validation ================================ Hostel Name ===========================================
    $input_name = trim( $_POST[ "hostelName" ] );
    
    if ( empty( $input_name ) ) 
    {
        $name_err = "Please enter a hostel name.";
    } 
    
    elseif ( !filter_var( $input_name, FILTER_VALIDATE_REGEXP, array( "options" => array( "regexp" => "/^[a-zA-Z\s]+$/" ) ) ) ) 
    {
        $name_err = "Please enter a valid name.";
    }
    
    else 
    {
        $name = $input_name;
    }

注意:我也尝试使用 d-block,需要验证,novalidate(导致服务器错误 403“禁止访问”)仍然无法正常工作

【问题讨论】:

  • 拜托,代码是文本,所以把它作为文本发布,图片让试图写答案的人无法使用
  • 这会导致问题,因为你使用了非转义双引号:action="&lt;?= htmlspecialchars($_SERVER[" PHP_SELF "]); ?&gt;",但你可以删除整个action属性,因为默认行为是提交给自己。除此之外,我无法重现,我可以看到验证错误。
  • 如果我删除所有“动作”属性它仍然有效
  • Tq to El_Vanja 寻求帮助,看来问题可以通过 2 种方式解决,我删除整个
     动作 属性或创建自定义 CSS 似乎可以解决问题,所以我选择创建一个自定义 CSS,即使它有很多工作要做,最后我可以显示 <pre>Invalid-feedback.

标签: php bootstrap-4


【解决方案1】:

非常感谢El_Vanja的帮助,忘记了form的默认行为是提交给自己。在我删除操作并遵循/阅读引导程序上的文档后。我终于可以显示无效反馈文本了。

        <form method="post" class="needs-validation" novalidate>
            <div class="form-group">
                <label for="hostelName">Hostel Name</label>
                <input type="text" class="form-control <?= (!empty($name_err)) ? 'is-invalid' : ''; ?>" id="hostelName" name="hostelName" value="<?= $name; ?>" required>
                <div class="invalid-feedback" >
                        <?= $name_err;?>
                    </div>
            </div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-23
    • 2021-06-15
    • 1970-01-01
    • 2019-11-16
    • 2014-04-22
    • 2018-10-30
    • 1970-01-01
    • 2019-02-12
    相关资源
    最近更新 更多