Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Нид хелп! Разобраться в коде (https://javascript.ru/forum/events/28736-nid-khelp-razobratsya-v-kode.html)

Prototype800 31.05.2012 15:14

Нид хелп! Разобраться в коде
 
Ребят, помогите. Какой код нужно вставить и куда, чтобы при удачной отправке данных поля input сбрасывались

Пример, имя одного из полей выглядит frm_order_tel

function send_form(frm, win, message_ok) {

//alert(frm.length);
/*
var frm_name = frm.frm_main_name.value;
var frm_address = frm.frm_main_address.value;
var frm_text = frm.frm_main_text.value;
*/
// debug
//var debug = document.getElementById('debug');
//alert('11');
//debug.innerHTML = '-----<br />';return false;
var fldname;
//alert('ok');
//return false;
var re =  /^(frm_)/g
var re_1space =  /^(\s)/g
var re_empty =  /^((.*)(\*)$)/g

var out_mes = '';
var out_mes_empty = '<h1>Вы не заполнили обязательные поля: </h1><br />';

var data_txt = '';
for (var i=0;i<frm.length;i++) {
if (frm[i].name) {
str = frm[i].name;
result = str.match(re);

if ((result && result != null)) {
if ((frm[i].name && frm[i].name != null) && (frm[i].value && frm[i].value != null)) {
if (frm[i].title && frm[i].title != null) fldname = frm[i].title;
else fldname = frm[i].name;
data_txt += "&" + fldname + "=" + frm[i].value;

}

var ctitle = frm[i].getAttribute("tooltip");
if (ctitle && ctitle != null) ctitle = ctitle.replace(re_1space,'');
// проверка на обязательные поля
if ((frm[i].title && frm[i].title != null) || (ctitle && ctitle != null)) {
ctitle = '' + ctitle;
result_empty = ctitle.match(re_empty);
//if (ctitle) result_empty = ctitle.match(re_empty);
//else if (frm[i].title) {ctitle = frm[i].title;result_empty = frm[i].title.match(re_empty);}
var re_star = /\*$/g;
//ctitle.replace(re_star,'')

var title_without_star = ctitle.replace(re_star,'');
title_without_star = title_without_star.replace(re_1space,'');

/*
if (frm[i].value == title_without_star) {
debug.innerHTML = title_without_star + '/ - /' + frm[i].value + '-<br />';return false;
}
else {debug.innerHTML = 'no-<br />';return false;}
*/

if (result_empty) {
  
  if ((!frm[i].value) || (frm[i].value == title_without_star)) {
  //debug.innerHTML = title_without_star + '/ - /' + frm[i].value + '-<br />';return false;
    out_mes += '— ' + title_without_star;
    out_mes += '<br />';
  }
}
}
}



}
}
//debug.innerHTML = title_without_star + '/ - /' + out_mes + '-<br />';return false;
if (win == null || !win) win = 'window';

//err_mesBlockTitle = document.getElementById('ui-dialog-title');
err_mesBlock = document.getElementById('windowContent');

if (out_mes && out_mes != null) {
  out_mes = out_mes_empty + out_mes;
  
  //out_mes = out_mes.replace(/(\,\s)$/g,'');
  
  //debug.innerHTML += out_mes + '-<br />';
  
  
  //err_mesBlockTitle.innerHTML = '<span>Ошибка</span>';
  
  err_mesBlock.innerHTML = out_mes;
  //jQuery('#' + win).show();//old
  //alert('win');
  jQuery('#' + win).dialog('open');
  return false;
}
data_txt = data_txt.replace(/^&/g,'');

// debug
//debug.innerHTML += data_txt + '-<br />';
//return false;

var bodyContent = jQuery.ajax({
      url: "/js/send.php",
      global: false,
      type: "POST",
      data: data_txt,//"name=" + frm_name + "&address=" + frm_address + "&text=" + frm_text,
      dataType: "html",
      async:false,
      success: function(msg, textStatus){
         //alert(msg);
         
         //msgxml = encodeURIComponent(msg);
         msgxml = msg;
         //alert(msgxml);
         
         if (textStatus == 'success') {
         
         //js_win_open('Сообщение отправлено','Ваше сообщение отправлено, оно будет рассмотрено в самое ближайшее время.');
    

          //err_mesBlockTitle.innerHTML = 'Сообщение отправлено';
          //err_mesBlockTitle.innerHTML = '<span>Сообщение отправлено</span>';
          if (!message_ok || message_ok == null) err_mesBlock.innerHTML = '<h1>Ваша заявка принята, она будет рассмотрена в ближайшее время. Благодарим за обращение в нашу компанию!</h1>';
          else  err_mesBlock.innerHTML = '<h1>' + message_ok + '</h1>';
          jQuery('#window2').dialog('close');
          //jQuery('#' + win).show();old
          jQuery('#' + win).dialog('open');
         }
         else {
         js_win_open('При отправки сообщения возникла ошибка','При отправке произошла ошибка. Приносим свои извинения.');//else alert('При отправке произошла ошибка. Приносим свои извинения.');
         }//
      }

   }
).responseText;


 jQuery(document).ajaxError(function(e, xhr, settings, exception) {
//alert('error in: ' + settings.url + ' \\n'+'error:\\n' + exception + '\\n' + xhr.status);
alert(xhr.status);
}); 



    return false;
}

Deff 31.05.2012 16:07

Простейщее -поставьте в Каждую форму кнопку Reset
<input name="resetForm1" type="reset" value="Сброс"/>

И вызывайте её клик при успешной отправке

$("input[name='resetForm1']").click()

Prototype800 31.05.2012 16:16

Цитата:

Сообщение от Deff (Сообщение 177788)
Простейщее -поставьте в Каждую форму кнопку Reset
<input name="resetForm1" type="reset" value="Сброс"/>

И вызывайте её клик при успешной отправке

$("input[name='resetForm1']").click()

Что-то подобное крутилось в голове, подскажите, как это реализовать в моем коде. Как кнопку ресет спрятить в хиден ?

Deff 31.05.2012 16:26

Цитата:

Сообщение от Prototype800
Можно же кнопку ресет спрятить в хиден ?

<input style="display:none" name="resetForm1" type="reset" value="Сброс"/>

Prototype800 31.05.2012 16:47

Цитата:

Сообщение от Deff (Сообщение 177793)
<input style="display:none" name="resetForm1" type="reset" value="Сброс"/>

Все получилось, спасибо большое. :D

Еще 1 есть нерешенный вопрос, куда и какой вставить код с валидацией, например "Только числа" ^[0-9\ ]+$ Для поля frm_order_tel

Сейчас идет валидация на пустые поля и вылазиет ошибка "Вы не заполнили обязательные поля" которые отмечены *, нужно чтобы с этой ошибкой срабатывала и проверка на шаблон

Deff 31.05.2012 16:55

Prototype800,
В Каждой форме добавить атрибут с перечислением полей нужных валидизатору, при проверке формы считывать атрибут и цикл по необходимых полей

Prototype800 31.05.2012 17:46

Цитата:

Сообщение от Deff (Сообщение 177800)
Prototype800,
В Каждой форме добавить атрибут с перечислением полей нужных валидизатору, при проверке формы считывать атрибут и цикл по необходимых полей

Между какими строками нужно это вставить, в яве не сильно понимаю :(

Deff 31.05.2012 20:05

Цитата:

Сообщение от Prototype800
Между какими строками нужно это вставить, в яве не сильно понимаю

Ну например первым тегом после <form
<input type="hidden" id="frm_match" name="match" value="1,2,3,4,5,6,7,8,9">
Затем парсите в скрипте перед началом валидизации
var NumArr = $("#frm_match").val().split(",")


Часовой пояс GMT +3, время: 07:51.