2013-05-08 89 views
2

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

我可以在表单中使用“禁用= \”禁用\”,但这并不能实时工作,根据验证禁用

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

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

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

</form> 
+4

你不能使用php,它的服务器端,其完成之前,用户可以开始输入。必须用JS \ ajax – 2013-05-08 00:32:28

+1

完成PHP可以**从不**用于实时客户端功能。您必须使用客户端脚本系统 - JS是当时的方式。 – Lukas 2013-05-08 00:50:33

+0

AJAX模糊线条,他可以通过AJAX调用'实时'php验证 – 2013-05-08 00:52:54

回答

0

你说:

我想用php做这个功能,可能不用javascript。

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

所以要么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

0

如前所述,如果你想实时完成一些 JavaScript将需要。

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

但在你的情况,根据你的意思是“有效的文本”,它可能更容易,更好地使用JavaScript。

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