2013-05-08 1 views
2

У меня есть HTML-форма в list.php, которая отправляет данные из текстового поля («элемент» в нижнем коде) на 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

+0

AJAX размывает линию, он может вызывать проверку подлинности в реальном времени через AJAX – 2013-05-08 00:52:54

ответ

0

Вы говорите:

I хотелось бы, чтобы эта функция выполнялась с помощью 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" /> 

Th используется в целях реализации jQuery.

0

Как уже упоминалось, если вы хотите, чтобы это было сделано в режиме реального времени, - - javascript будет необходим.

Однако я думаю, что эта проблема на самом деле больше подходит для javascript вообще. Проверка PHP может быть полезна, если вам нужно перекрестно ссылаться на данные с данными в вашей базе данных. например. В форме регистрации проверка пользователя еще не зарегистрирована с введенным адресом электронной почты.

Но в вашем случае, в зависимости от того, что вы подразумеваете под «действительным текстом», вероятно, проще и лучше использовать javascript.

Есть несколько отличных плагинов jQuery, которые делают проверку javascript очень простой. http://docs.jquery.com/Plugins/Validation/validate

Смежные вопросы