2

我在 list.php 中有一个 HTML 表单,它将文本框(下面代码中的“项目”)中的数据提交到 check.php。这个 check.php 验证输入的文本不是空的或只有空格。验证后,它重定向到 list.php 以显示输入的文本。list.php 如下。我希望仅当在文本框中输入有效文本时才启用“添加”按钮。我希望这个功能可以用 php 来完成,而不是用 javascript。

我可以在表单中使用 "disabled=\"disabled\" ,但这在实时禁用中不起作用,具体取决于验证。

<form action="check.php" method="post">

<input name="item" type="text" size="25" autofocus="autofocus" />

<input type="submit" value="Add" id="add" />

</form>
4

2 回答 2

0

你说:

我希望这个功能可以用 php 来完成,而不是用 javascript。

不幸的是,如果您想要“实时”,那么您将需要 JavaScript。您将需要它来对您的 PHP 代码进行 AJAX 调用以检查验证。

因此,要么 A)您根本不进行“实时”验证,要么 B)您以一种或另一种形式使用 JavaScript。

假设您选择 B),使用 JavaScript,并假设您需要做的只是检查空字符串或空格,那么您可以在 JavaScript 中完成所有这些客户端,并且根本不需要服务器调用使其真正“实时”。

因此,这是我的解决方案,使用 JavaScript (jQuery) 而不依赖于服务器调用。这可能不适合您当前的实现,但以防万一,这可能会有所帮助。

JSFiddle:http:
//jsfiddle.net/VKfrw/1/

JavaScript:

function hasWhiteSpaceOrEmpty(s) 
{
  return s == "" || s.indexOf(' ') >= 0;
}

function validateInput()
{
    var inputVal = $("#myInput").val();
    if(hasWhiteSpaceOrEmpty(inputVal))
    {
        //This has whitespace or is empty, disable the button
        $("#add").attr("disabled", "disabled");
    }
    else
    {
        //not empty or whitespace
        $("#add").removeAttr("disabled");
    }
}

$(document).ready(function() {
    $("#myInput").keyup(validateInput);
});

HTML:

<!-- give this guy an ID -->
<input id="myInput" name="item" type="text" size="25" autofocus="autofocus" />

此实现使用jQuery

于 2013-05-08T02:08:53.350 回答
0

如前所述,如果您希望实时完成此操作,则需要一些javascript。

但是我认为这个问题实际上更适合一般的javascript。如果您需要将数据与数据库中的数据交叉引用,PHP 验证会很有用。例如。在注册表单中,检查用户是否尚未使用输入的电子邮件地址进行注册。

但在您的情况下,根据您所说的“有效文本”的含义,使用 javascript 可能更容易和更好。

有一些很棒的 jQuery 插件可以让 javascript 验证变得非常简单。 http://docs.jquery.com/Plugins/Validation/validate

于 2013-05-08T02:27:40.930 回答