Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Передать только заполненные в форме параметры
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Передать только заполненные в форме параметры

Страниц (2): [1] 2 »
 

1. Kronter - 31 Марта, 2015 - 16:10:05 - перейти к сообщению
Можно ли передать только заполненные в форме параметры, а те, которые не заполнили, не передавать?
Например:[/code]
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form method='GET' action=index.php>
  3.  
  4. <input type=text name=ab>
  5.  
  6. <select name='ac'>
  7. <option value=1>1</option>
  8. <option value=2>2</option>
  9. </select>
  10.  
  11. <input type=submit>
  12.  
  13. </form>
  14.  

Если заполнили только <input type=text name=ab>, то страница обработчика должна выглядеть index.php?ab=111. Сейчас она выглядит index.php?ab=111&ac=
2. DeepVarvar - 31 Марта, 2015 - 16:19:28 - перейти к сообщению
Зачем?
Наличие, отсутствие и значение чего-либо на бекенде всеравно валидировать придется.
Не извращайся.
3. Kronter - 31 Марта, 2015 - 16:39:18 - перейти к сообщению
Да слишком уж длинная строка получается из-за одного параметра...
4. Faraon-san - 31 Марта, 2015 - 16:50:16 - перейти к сообщению
отправляй POST если хочешь скрыть.
CODE (html):
скопировать код в буфер обмена
  1. <form method="post" action="index.php">
  2. <input type="text" name="ab">
  3. <select name="ac">
  4. <option value="1">1</option>
  5. <option value="2">2</option>
  6. </select>
  7. <input type="submit">
  8. </form>
5. armancho7777777 - 31 Марта, 2015 - 17:07:47 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1. NodeList.prototype.filter = Array.prototype.filter;
  2. NodeList.prototype.map = Array.prototype.map;
  3.  
  4. window.onload = function()
  5. {
  6.     var form = document.getElementById('my-form'), // <-- id формы
  7.         elements = form.querySelectorAll('input[type=text], select'),
  8.         action = (form.action || location.pathname) + '?';
  9.  
  10.     form.onsubmit = function()
  11.     {
  12.         var query = elements.filter(function(el){
  13.             el.value = el.value.trim();
  14.             return !!el.value;
  15.         });
  16.  
  17.         query = query.map(function(el){
  18.             return el.name + '=' + el.value;
  19.         });
  20.  
  21.         if(query = query.join('&')) {
  22.             location.href = action + query;
  23.         }
  24.  
  25.         return false;
  26.     };
  27. };


В IE < 9 работать не будет.
6. DeepVarvar - 31 Марта, 2015 - 19:50:01 - перейти к сообщению
О, я смотрю ты тоже VanillaJS полюбил ))
7. armancho7777777 - 01 Апреля, 2015 - 09:58:33 - перейти к сообщению
Да нет, я его даже не щупал )
Тут нативный JS.
8. DeepVarvar - 01 Апреля, 2015 - 10:32:42 - перейти к сообщению
armancho7777777 пишет:
Да нет, я его даже не щупал )
Тут нативный JS.
Эмм http://vanilla-js[dot]com/
9. Dastor - 01 Апреля, 2015 - 10:32:46 - перейти к сообщению
Бросилось в глаза)

CODE (javascript):
скопировать код в буфер обмена
  1. String.prototype.trim = function() {
  2.     return this.replace(/^\s+/, '').replace(/\s+$/, '');
  3. };


http://www[dot]w3schools[dot]com/jsref/j[dot][dot][dot]_trim_string[dot]asp
(Добавление)
Кстати, интересный подход
CODE (javascript):
скопировать код в буфер обмена
  1. NodeList.prototype.filter = Array.prototype.filter;
  2. NodeList.prototype.map = Array.prototype.map;

Взял на заметку) Обычно вызываю через call - Array.prototype.filter.call(elements, func)
10. armancho7777777 - 01 Апреля, 2015 - 12:18:34 - перейти к сообщению
Dastor пишет:
Бросилось в глаза)

А, есть уже ))
Исправил.

DeepVarvar пишет:
Эмм http://vanilla-js[dot]com/

Ильюха, я знаю о её существовании )
Просто не щупал.
11. DeepVarvar - 01 Апреля, 2015 - 12:44:26 - перейти к сообщению
armancho7777777 пишет:
Просто не щупал
Ты врешь сам себе. Потрать три минуты на изучение текста на той странице.
12. armancho7777777 - 01 Апреля, 2015 - 13:08:45 - перейти к сообщению
Радость Радость Радость
А я думаю, где я о нём "слышал" ))
http://forum.php.su/topic.php?fo...=69&topic=42
13. nerv - 01 Апреля, 2015 - 16:28:50 - перейти к сообщению
повеселили Улыбка

Dastor пишет:
Кстати, интересный подход

опасный)

armancho7777777 пишет:
if(query = query.join('&'))


жестоко

armancho7777777 пишет:
NodeList.prototype.filter = Array.prototype.filter;
NodeList.prototype.map = Array.prototype.map;

чтобы так не извращаться, можно заполифилить

самый сок с es6 начинается
http://babeljs[dot]io/docs/learn-es6[dot][dot][dot]cript-6-features
14. armancho7777777 - 01 Апреля, 2015 - 17:09:37 - перейти к сообщению
nerv пишет:
жестоко
?

nerv пишет:
повеселили

Так ты бы хоть раз выложил свой код,
может и не то было бы Радость
15. nerv - 01 Апреля, 2015 - 18:17:31 - перейти к сообщению
armancho7777777 пишет:
повеселили

ну, я по доброму говорю)

armancho7777777 пишет:
Так ты бы хоть раз выложил свой код,
может и не то было бы

https://github[dot]com/nervgh?tab=repositories

сборка ангуляр-модуля на es6 https://yadi[dot]sk/i/wlVIW1g5et637

самописная extend (пока не покрывал тестами)
https://yadi[dot]sk/i/DYKJb08-fcUzA
зачем это мне нужно, говорил здесь
http://javascript[dot]ru/forum/offto[dot][dot][dot][dot]html#post363894

из последнего итератор на es6
http://javascript[dot]ru/forum/proje[dot][dot][dot]jj-iterator[dot]html
https://github[dot]com/nervgh/recursive-iterator

если хочешь, почитай мою (единственную =) статью про es6
http://css-live[dot]ru/javascript/ka[dot][dot][dot]-6-segodnya[dot]html

armancho7777777 пишет:
?

обычно, в ифах присваивание не делают. Большая вероятность не заметить (наступить на грабли)

 

Powered by ExBB FM 1.0 RC1